21. maj 2003 - 14:19
Der er
18 kommentarer og 2 løsninger
Fil eksekvering 2
Med Shellexecute kan man i C++ eksekvere filer på følgende måde: ShellExecute(NULL, "open", "notepad.exe", NULL, NULL, SW_NORMAL); Men... hvis jeg vil eksekvere en fil med en længere sti f.eks. C:\Spil\Bomberman\BM95.exe ... så kan det ikke bare gøres ved at skrive: ShellExecute(NULL, "open", "C:\Spil\Bomberman\BM95.exe", NULL, NULL, SW_NORMAL); Hvordan kan det så gøres!?
Annonceindlæg fra Capgemini
ShellExecute(NULL, "open", "C:\\Spil\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL);
ShellExecute(NULL, "open", "C:\\Spil\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL);
Kan du virkelig på 2 sekunder nå at skrive af fra mig ... flot klaret :)))
Jeg har nu prøvet med : ShellExecute(NULL, "open", "D:\\Games\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL); Det virker ikke.
hvis I ikke har gættet det, så ligger filen i d:\games\bomberman... !
Dette virker fint hos mig (lang path): #include <windows.h> int main(int argc, char **argv) { ShellExecute(NULL, "open", "c:\\Documents and Settings\\Administrator\\My Documents\\cpp\\skabeloner\\win32_dialog\\main.exe", NULL, NULL, SW_NORMAL); return 0; } Har du kigget om filens placering er korrekt ?
filens placering er god nok. Kan det have noget at gøre med, at jeg bruger Borland C++ 6 pro, som jo er visuelt!?
jeg har gjort sådan!: void __fastcall TForm1::Button1Click(TObject *Sender) { ShellExecute(NULL, "open", "D:\\Games\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL); }
Prøv at kør: D:\Games\Bomberman\BM95.exe Via: Start -> Run Starter programmet (spillet ?) så ?
Mangler du evt. at angive working directory isteder for en af de mange NULL?
det har vist ikke noget at gøre med alle de NULL'er!
Prøv lige at paste parameter listen fra ShellExecute.
Prøv at sætte en MessageBox ind før du kalder ShellExecute - det kunne jo være koden slet ikke kaldes... void __fastcall TForm1::Button1Click(TObject *Sender) { MessageBox(NULL, "ShellExecute i TForm1::Button1Click", "Debug:", MB_OK); ShellExecute(NULL, "open", "D:\\Games\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL); }
(PS: Jeg frafalder point. Giv dem til Søren når I finder løsningen)
Jeg har prøvet det nu... også mens jeg debugger ... koden bliver skam kaldt, men det sker der ikke noget ved!
Hmmm, det må være et eller andet galt hos dig. Prøv dette: void __fastcall TForm1::Button1Click(TObject *Sender) { char buffer[256]; int val; val = ShellExecute(NULL, "open", "D:\\Games\\Bomberman\\BM95.exe", NULL, NULL, SW_NORMAL); itoa(val, buffer, 10); MessageBox(NULL, buffer, "Debug:", MB_OK); } Hvilket tal skriver den ud ? (Du skal nok tilføje #include <stdio.h> for at kunne bruge itoa())
Overvej: ShellExecute(NULL, "open", "D:\\Games\\Bomberman\\BM95.exe", NULL, "D:\\Games\\Bomberman", SW_NORMAL);
Eriks måde virkede... Tak for hjælpen. Begge to.
Det var jo så segmose, der havde ideen... Den anførte parameter angive working directory for programmet. Uden den anvendes - visnok - dit C-programs working directory.
Kurser inden for grundlæggende programmering