Seite 1 von 1
ShellExecute
Verfasst: 17.12.2007 16:50
von Bytedevil
Hallo!
Die ShellExecute speichert das Handle des aufgerufenen Programms in der als ersten Parameter angegebenen Variable, oder?
HINSTANCE ShellExecute( HWND hwnd, char *lpOperation, char *lpFile, char *lpParameters, char *lpDirectory, int nShowCmd );
Das klappt bei mir irgendwie nicht, die Variable bleibt immer Null.
Kann mir bitte jemand helfen?
LG, Bytedevil
Verfasst: 17.12.2007 18:17
von milan1612
Nimm doch einfach RunProgram(). Ist viel simpler und kann das selbe...
Re: ShellExecute
Verfasst: 17.12.2007 18:30
von Fluid Byte
Bytedevil hat geschrieben:Die ShellExecute speichert das Handle des aufgerufenen Programms in der als ersten Parameter angegebenen Variable, oder?
Nein, dieser Parameter identifiziert das Fenster Handle.
Verfasst: 17.12.2007 20:38
von Bytedevil
Nimm doch einfach RunProgram(). Ist viel simpler und kann das selbe...
Das einzige, was RunProgram() kann, ist einen Wert zurückgeben. Dieser entspricht wohl kaum dem Handle des Fensters.
Ausgabe = 1
Nein, dieser Parameter identifiziert das Fenster Handle.
Und was heißt das?
liefert bei mir den Rückgabewert 42 - soll das das Handle sein?
---
Worum geht es mir eigentlich?
Ich möchte ein Programm öffnen und dieses, wenn es im RAM liegt, manipulieren ("Loader"). Dazu brauche ich die ProcessID und wollte diese über den Umweg ShellExecute bewerkstelligen.
Anscheinend klappt das direkt (und somit besser) per CreateProcess.
Verfasst: 17.12.2007 21:06
von Bytedevil
@Milan1612
Hast natürlich recht.
Ich habe noch PB 3.x auf'm Rechner gehabt und wundere - nein, freue mich gerade über die neuen Möglichkeiten mit Version 4.
So geht's (und zwar wie immer kinderleicht in PureBasic):
Code: Alles auswählen
hWnd = RunProgram ("notepad.exe","","",#PB_Program_Open)
PID = ProgramID(hWnd)
Debug PID
Verfasst: 17.12.2007 21:10
von Fluid Byte
Bytedevil hat geschrieben:Dazu brauche ich die ProcessID und wollte diese über den Umweg ShellExecute bewerkstelligen.
Code: Alles auswählen
Result = RunProgram("notepad","","",#PB_Program_Open)
Debug ProgramID(Result)
Verfasst: 17.12.2007 21:12
von Bytedevil
Na, sag ich doch...

Verfasst: 17.12.2007 21:15
von Kiffi
Bytedevil hat geschrieben:Das einzige, was RunProgram() kann, ist einen Wert zurückgeben.
tun das nicht die meisten Funktionen?
Bytedevil hat geschrieben:[...] Dazu brauche ich die ProcessID
Code: Alles auswählen
Programm = RunProgram("Notepad.exe", "", "", #PB_Program_Open)
Debug ProgramID(Programm)
Grüße ... Kiffi