RunProgram_ Task ID bei z.B.Access

Für allgemeine Fragen zur Programmierung mit PureBasic.
megamux
Beiträge: 3
Registriert: 16.03.2015 21:20

RunProgram_ Task ID bei z.B.Access

Beitrag von megamux »

Hallo liebe Leute,

Ich bin ein großer PB Fan....

Ich habe folgendes Problem. Ich benutze RunProgram_ um die Programm ID zurück zu bekommen wenn ich einen
MSaccess MDB über Purebasic starte. Das funktioniert auch.

Aber wenn ich nun eine zweite Access MDB starte dann bekomme ich 0 zurück was definitiv falsch ist.
Kann mir jemand einen Tipp geben?

Danke

Marc
:)

Zur info so Schaut der code aus den ich dazu verwende (nicht von mir entwickelt)

Code: Alles auswählen

EnableExplicit

Define ProcessID

#kExit_Code_Error=1
#kExit_Code_Success=0

Procedure SetPriority(ProgramID.l, PriorityLevel.l)
  Protected ProcessHandle.l

  ProcessHandle = OpenProcess_(#PROCESS_DUP_HANDLE | #PROCESS_SET_INFORMATION, #True, ProgramID)
  If ProcessHandle
    SetPriorityClass_(ProcessHandle, PriorityLevel)
    CloseHandle_(ProcessHandle)
  EndIf
EndProcedure

Procedure GetProcessId_(hProcess)
  Static *pGetProcessId
  Protected *func = AllocateMemory(13)
  PokeS(*func, "GetProcessId", -1, #PB_Ascii)
  If Not *pGetProcessId
    *pGetProcessId=GetProcAddress_(GetModuleHandle_("kernel32.dll"),*func)
  EndIf
 
  If Not *pGetProcessId
    ProcedureReturn 0
  EndIf
  FreeMemory(*func)
  ProcedureReturn CallFunctionFast(*pGetProcessId,hProcess)
EndProcedure

Procedure RunProgram_(ProgramName.s, Parameter.s="", WorkingDirectory.s="", Visible=#SW_SHOW)
  Protected ShellExInfo.SHELLEXECUTEINFO
 
  ShellExInfo\cbSize=SizeOf(ShellExInfo)
  ShellExInfo\fMask=#SEE_MASK_NOCLOSEPROCESS
  ShellExInfo\lpVerb=@"Open"
  ShellExInfo\lpFile=@ProgramName.s
  ShellExInfo\lpParameters=@Parameter.s
  ShellExInfo\lpDirectory=@WorkingDirectory.s
  ShellExInfo\nShow=Visible
 
  ShellExecuteEx_(@ShellExInfo)
 
  ProcedureReturn GetProcessId_(ShellExInfo\hProcess)
EndProcedure
__________________________________________________
Code-Tags hinzugefügt
16.03.2015
RSBasic
Marc

----------------
Intelligenz scheint ausreichen vorhanden zu sein. Keiner beschwert sich das er zu wenig hat. (nicht von mir, kann leider nicht sagen von wem, vergessen!)
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: RunProgram_ Task ID bei z.B.Access

Beitrag von Kiffi »

ich bekomme 2 unterschiedliche IDs zurück.

Code: Alles auswählen

Debug RunProgram_("msaccess", "d:\test\test_1.mdb")
Debug RunProgram_("msaccess", "d:\test\test_2.mdb")
Grüße ... Peter
a²+b²=mc²
megamux
Beiträge: 3
Registriert: 16.03.2015 21:20

Re: RunProgram_ Task ID bei z.B.Access

Beitrag von megamux »

Hallo Peter

Vielen Dank. Ich bin auch zu doof. Ich habe den Aufruf so gestaltet:

Code: Alles auswählen

Debug RunProgram_("d:\test\test_1.mdb")
Das funktioniert auch aber eben nur 1x beim zweiten Aufruf kommt 0 zurück obwohl das Programm geöffnet wird.
Jetzt läufts einwandfrei.

Danke für die schnelle hilfe.

Grüße marc
__________________-
Wer lesen kann ist klar im Vorteil .... :?
Marc

----------------
Intelligenz scheint ausreichen vorhanden zu sein. Keiner beschwert sich das er zu wenig hat. (nicht von mir, kann leider nicht sagen von wem, vergessen!)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: RunProgram_ Task ID bei z.B.Access

Beitrag von NicTheQuick »

Das liegt wahrscheinlich daran, dass bei deinem zweiten Aufruf dem Prozess aus dem ersten Aufruf lediglich mitgeteilt wird ein zweites Fenster zu öffnen. Dann sieht das zwar so aus, als ob zwei Programme laufen, aber eigentlich läuft nur eins mit zwei sichtbaren Fenstern.
Antworten