ShellExecute
ShellExecute
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
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
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: ShellExecute
Nein, dieser Parameter identifiziert das Fenster Handle.Bytedevil hat geschrieben:Die ShellExecute speichert das Handle des aufgerufenen Programms in der als ersten Parameter angegebenen Variable, oder?
Code: Alles auswählen
Debug ShellExecute_(0,"open","notepad",0,"",#SW_SHOW)
Windows 10 Pro, 64-Bit / Outtakes | Derek
Das einzige, was RunProgram() kann, ist einen Wert zurückgeben. Dieser entspricht wohl kaum dem Handle des Fensters.Nimm doch einfach RunProgram(). Ist viel simpler und kann das selbe...
Code: Alles auswählen
Debug RunProgram("Notepad.exe")
Und was heißt das?Nein, dieser Parameter identifiziert das Fenster Handle.
Code: Alles auswählen
Debug ShellExecute_(0,"open","notepad",0,"",#SW_SHOW)
---
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.
@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):
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
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
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)
Windows 10 Pro, 64-Bit / Outtakes | Derek
tun das nicht die meisten Funktionen?Bytedevil hat geschrieben:Das einzige, was RunProgram() kann, ist einen Wert zurückgeben.

Bytedevil hat geschrieben:[...] Dazu brauche ich die ProcessID
Code: Alles auswählen
Programm = RunProgram("Notepad.exe", "", "", #PB_Program_Open)
Debug ProgramID(Programm)
a²+b²=mc²