Das heisst Getcurrentdirectory() tut hier nix zur Sache, da es sich auf mein Programm bezieht.
Wie geht sowas ? Wer kann mir helfen ?
Code: Alles auswählen
Procedure.s GetCurrentDir(ProcessID.i)
Protected Result.s, ProcessHandle.i, *CurrentDir
Protected rtl.RTL_USER_PROCESS_PARAMETERS, pbi.PROCESS_BASIC_INFORMATION, peb.PEB
AdjustProcessPrivilege()
ProcessHandle = OpenProcess_(#PROCESS_QUERY_INFORMATION | #PROCESS_VM_READ, #False, ProcessID)
If ProcessHandle
pbi\PebBaseAddress = GetPBI(ProcessHandle)
peb\ProcessParameters = GetPEB(ProcessHandle, pbi\PebBaseAddress)
If ReadProcessMemory_(ProcessHandle, peb\ProcessParameters, @rtl, SizeOf(rtl), #Null)
If rtl\CurrentDirectoryPath\Buffer
*CurrentDir = AllocateMemory(rtl\CurrentDirectoryPath\MaximumLength)
If ReadProcessMemory_(ProcessHandle, rtl\CurrentDirectoryPath\Buffer, *CurrentDir, rtl\CurrentDirectoryPath\MaximumLength, #Null)
Result = PeekS(*CurrentDir, rtl\CurrentDirectoryPath\MaximumLength, #PB_Unicode)
EndIf
FreeMemory(*CurrentDir)
EndIf
EndIf
CloseHandle_(ProcessHandle)
EndIf
ProcedureReturn Result
EndProcedure
Process = RunProgram("notepad.exe", "", "C:\Users\", #PB_Program_Open)
If IsProgram(Process)
Debug GetCurrentDir(ProgramID(Process)) ; gibt "C:\Users\" aus
EndIf
Und das macht der komplexe Code zusammen mit meiner Procedure. Der Code hinter dem Link ist also ebenfalls erforderlich und keine Alternative zu meinem Code.3dhubiflieger hat geschrieben:Ich will eigentlich nur das aktuelle Verzeichniss des "fremden" Programmes wissen.
