Avatar billede masteryeti Nybegynder
17. maj 2001 - 12:33 Der er 12 kommentarer og
1 løsning

Benytte en *.exe fil til at ændre en streng

Jeg har lavet en lille hello.exe fil, der har koden


void main()
{
  char* temp;
  cin >> temp;
  strcat(temp, \" + lidt ekstra\");
  cout << temp;
}

i et andet test-program, der indeholder 2 Edit-bokse + en knap, sender jeg en streng til hello.exe vha.
ShellExecute(0, static_cast<const char*>(temp.data()), \"hello.exe\",NULL,NULL,SW_SHOWNORMAL); - hcvor temp.data er en AnsiString med min streng.

Kan jeg nu få fat i værdien hello.exe udskriver med cout ??
Avatar billede masteryeti Nybegynder
17. maj 2001 - 12:44 #1
fejl .. linien :
ShellExecute(0, static_cast<const char*>(temp.data()), \"hello.exe\",NULL,NULL,SW_SHOWNORMAL);
virker ikke - så jeg har også behov får en måde at sende en AnsiString til programmet - eller konvertere AnsiStrengen til noget så jeg kan.
Avatar billede wisen Nybegynder
17. maj 2001 - 12:48 #2
Du skal bytte om på \"hello.exe\" og din static_cast.

ShellExecute(NULL, \"open\", \"hello.exe\", static_cast<const char*>(temp.data()), NULL, SW_SHOWNORMAL);
Avatar billede wisen Nybegynder
17. maj 2001 - 12:52 #3
Avatar billede masteryeti Nybegynder
17. maj 2001 - 13:17 #4
jeg kan ikke rigtigt bruge det der VB til noget, da jeg hverken kan finde hoved eller hale i det. Og den nye ShellExecute ændrer ikke rigtigt på noget. :(

Ellers tak Wisen
Avatar billede wisen Nybegynder
17. maj 2001 - 13:19 #5
Kan du køre det sådan her : ShellExecute(NULL, \"open\", \"hello.exe\", NULL, NULL, SW_SHOWNORMAL); ?

Avatar billede wisen Nybegynder
17. maj 2001 - 13:20 #6
Det ser ud til, at du skal bruge API-kaldet \"CreatePipe\", prøv at grave lidt i det...
Avatar billede masteryeti Nybegynder
17. maj 2001 - 13:57 #7
ShellExecute(NULL, \"open\", \"hello.exe\", NULL, NULL, SW_SHOWNORMAL);  virker fint - men det starter bare programmet - det fører jo ingen strenge med :(
Jeg kigger lidt på Pipes :)
Avatar billede wisen Nybegynder
17. maj 2001 - 14:03 #8
Du skal huske at \"temp.data()\", skal være NULL-termineret! Det kan være det der er galt...
Avatar billede tuxen Nybegynder
18. maj 2001 - 12:43 #9
Jeps, du kan ikke sende en AnsiString som du også selv siger...
Er4 det builder, kan du bruge funktionen c_str() den laver strengen om til en almidelig null termineret streng.
altså: temp.data().c_str();
Altså generelt: Ansistring.c_str();
Avatar billede wisen Nybegynder
21. maj 2001 - 14:11 #10
Fandt du noget du kunne bruge ?
Avatar billede masteryeti Nybegynder
21. maj 2001 - 16:04 #11
mnaej . ikke rigtigt ... jeg kan starte exe-filen nu, så jeg har valgt bare at overføre strengen ved at gemme den i en tekst-streng ... men du fik pointene for din indsats alligevel :)
Nu driller det med at skrive i den text-fil mig bare lidt.
jeg skal
1)skrive en streng i filen fra C++ fra en editbox
2) hente strengen fra exe-filen (ren C-kode) og gemme den igen
3) hente den bearbejde streng, og smide den i en ny editbox

Har du gode råd ?
Avatar billede wisen Nybegynder
22. maj 2001 - 14:26 #12
Her er et eksempel på, en windowsapp, der fanger outputtet fra en konsolapp, måske du kan bruge det...
Avatar billede wisen Nybegynder
22. maj 2001 - 14:26 #13
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester