Hi
gibt es die Möglichkeit festzustellen, ob ein Programm gestartet ( aktiv ) ist?
Damit meine ich ein Programm, z.B. Notepad, Paint, oder oder oder ... !
Die Prozesse von Windows.
Ich kann bei einem Dialogfenster ja festlegen, ob es in der Taskliste erscheint oder nicht.
Das zählt mit Sicherheit auch für andere Programme, z.B. Dienste.
Prüfen ob irgend ein Programm aktiv ist
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Prüfen ob irgend ein Programm aktiv ist
hi Bruno,
gesetzt hat
hier eine Lösung mit OT4XB wenn die App in der Taskliste "sichtbar" ist
Code: Alles auswählen
#include "ot4xb.ch"
//-------------------------------------------------------------------------------------------------------------------------
proc appsys();return
//-------------------------------------------------------------------------------------------------------------------------
proc main()
local aList := aGetTaskBarWindows()
if Empty(aList)
MsgBox( "Empty List" )
else
DlgABrw( aList,"List Windows in the TaskBar",;
{ "HWND ","Title ",;
"ThreadId ","ProcessId ","Process Name"},;
{|aPos,u,oBrw| u := oBrw:GetData() , iif(Empty(u),,;
@user32:FlashWindowEx({20,aList[u][1],3,10,500} ));
})
end
return
//-------------------------------------------------------------------------------------------------------------------------
function WndEnumProc( hWnd , cona )
local aInfo := Array(5)
local n := @user32:GetWindowTextLengthA(hWnd)
local c
if (n == 0 ) ; return .T. ; end
if (@user32:GetWindow(hWnd,4) != 0) ; return .T. ; end
if (@user32:GetParent(hWnd) != 0) ; return .T. ; end
if( @user32:IsWindowVisible(hWnd) == 0) ; return .T. ; end
if( lAnd( @user32:GetWindowLongA(hWnd, -20) , 0x80) ) ; return .T. ; end
aInfo[1] := hWnd
c := ChrR(0,n)
@user32:GetWindowTextA(hWnd,@c,Len(c)+1)
aInfo[2] := c
n := 0
aInfo[3] := @user32:GetWindowThreadProcessId(hWnd,@n)
aInfo[4] := n
c := ChrR(0,260)
aInfo[5] := cPid2ModName(aInfo[4] )
aadd( _con2var(cona) , aInfo )
return .T.
//-------------------------------------------------------------------------------------------------------------------------
function aGetTaskBarWindows()
local aWnd := {}
local cona := _var2con(aWnd)
@user32:EnumWindows(_callback_WndEnumProc(),cona)
_conRelease(cona)
return aWnd
//-------------------------------------------------------------------------------------------------------------------------
static function cPid2ModName( nPid )
local hProcess := @kernel32:OpenProcess(0x410,.F.,nPid)
local cName := Chrr(0,512)
local hMod := 0
local cbn := 0
if( !Empty(hProcess) )
if( @psapi:EnumProcessModules(hProcess,@hMod,4,@cbn) != 0 )
@psapi:GetModuleBaseNameA(hProcess,hMod,@cName, Len(cName))
end
@kernel32:CloseHandle(hProcess)
end
return TrimZ(cName)
eine Xbase++ App "erscheint" wenn
Code: Alles auswählen
oDialog:Tasklist := .T.
gruss by OHR
Jimmy
Jimmy
- Bruno
- Rekursionen-Architekt
- Beiträge: 103
- Registriert: So, 16. Apr 2023 23:11
- Wohnort: Lauterbach
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 4 Mal
Re: Prüfen ob irgend ein Programm aktiv ist
Hallo Jimmy,
Danke.
Holt das die Information aus der Taskliste, die man sieht, wenn man den Task Manager aufruft?
ot4xb, ich habe zwar die ch Dateien, aber die lib Dateien hab ich nicht mehr. war wohl mit auf den Datenträgern welche 2013 zerstört wurden.
Gruss Bruno
Xbase++ 1.9.355 ohne eExpress
Xbase++ 1.9.355 ohne eExpress
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
- Bruno
- Rekursionen-Architekt
- Beiträge: 103
- Registriert: So, 16. Apr 2023 23:11
- Wohnort: Lauterbach
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 4 Mal
Re: Prüfen ob irgend ein Programm aktiv ist
Hi Jimmy,
Bekomme diese Meldungen
[Error] : ALK2102: unresolved external symbol DLGABRW
[Error] : ALK2102: unresolved external symbol _CALLBACK_WNDENUMPROC
Hat sich erledigt, habe das Testprogramm bei ot4xb runtergeladen.
Danke
Bekomme diese Meldungen
[Error] : ALK2102: unresolved external symbol DLGABRW
[Error] : ALK2102: unresolved external symbol _CALLBACK_WNDENUMPROC
Hat sich erledigt, habe das Testprogramm bei ot4xb runtergeladen.
Danke
Gruss Bruno
Xbase++ 1.9.355 ohne eExpress
Xbase++ 1.9.355 ohne eExpress