Avatar billede baxos Nybegynder
15. november 2003 - 14:54 Der er 9 kommentarer og
2 løsninger

Check om program kører

Hvordan kan jeg checke om programmet kører...? eks  om Msn Messenger er tændt?
Avatar billede baxos Nybegynder
15. november 2003 - 14:56 #1
If Dir('c:\***********') <> '1' then  ?
Avatar billede Peter Nissen Nybegynder
15. november 2003 - 14:56 #2
du kan trykke ctrl+alt+delete, og så kommer der en oversigt som skulle vise alt hvad computeren kører.
Avatar billede baxos Nybegynder
15. november 2003 - 14:58 #3
Valla kig på kat :P
Avatar billede dkn Nybegynder
15. november 2003 - 14:58 #4
det kan du gøre ved hjælp af findwindow:

if findwindow(nil, 'MSN Messenger') <> 0 then
  Showmessage('Messenger kører') else
  Showmessage('Messenger kører ikke');

Du kan gøre det ved hjælp af caption og/eller classname, se i hjælp om findwindow
Avatar billede Peter Nissen Nybegynder
15. november 2003 - 14:59 #5
sry
Avatar billede Slettet bruger
15. november 2003 - 14:59 #6
Eller ved hjælp af exe filens navn:

Uses TlHelp32;

Type
  TEnumData = Record
    hW: HWND;
    pID: DWORD;
  End;

Function EnumProc( hw: HWND; Var data: TEnumData ): Bool; stdcall;
  Var
    pID: DWORD;
  Begin
    Result := True;
    If (GetWindowLong(hw, GWL_HWNDPARENT) = 0) and
      (IsWindowVisible( hw ) or IsIconic(hw))
    Then Begin
      GetWindowThreadProcessID( hw, @pID );
      If pID = data.pID Then Begin
        data.hW := hW;
        Result := False;
      End; { If }
    End; { If }
  End; { EnumProc }

Function WindowFromProcessID( pID: DWORD ): HWND;
  Var
    data: TEnumData;
  Begin
    data.pID := pID;
    data.hW := 0;
    EnumWindows( @EnumProc, longint(@data) );
    Result := data.hW;
  End; { WindowFromProcessID }

Function WindowFromAppname32( appname: String ): HWND;
  { Take only the application filename, not full path!
    Need to pass the extension as well. }
  Var
    snapshot: THandle;
    processEntry : TProcessEntry32;
  Begin
    Result := 0;
    snapshot := CreateToolhelp32Snapshot(
                  TH32CS_SNAPPROCESS,
                  0 );
    If snapshot <> 0 Then
    try
      processEntry.dwSize := Sizeof( processEntry );
      If Process32First( snapshot, processEntry ) Then
      Repeat
        If AnsiCompareText(
            appname,
            ExtractFilename( StrPas(processEntry.szExeFile))
            ) = 0
        Then Begin
          Result:= WindowFromProcessID( processEntry.th32ProcessID);
          Break;
        End; { If }
      Until not Process32Next( snapshot, processEntry );
    finally
      CloseHandle( snapshot );
    End; { try }
  End; { WindowFromAppname32 }


procedure TForm1.Button1Click(Sender: TObject);
begin
if WindowFromAppname32('msnmsgr.exe') <> 0 then
  ShowMessage('Messenger kører')
else
  ShowMessage('Messenger kører ikke');
end;
Avatar billede baxos Nybegynder
15. november 2003 - 16:13 #7
Hvilken metode er sikkrets?
Avatar billede jesper_bn Nybegynder
15. november 2003 - 21:34 #8
tryk ctrl + alt + del og vælg jobliste (i XP) og vælg prosesser der kan du se alt der er i gang.
Avatar billede darkside Nybegynder
15. november 2003 - 23:38 #9
jesper_bn, Lur lige hvilken kategori det her er...
Du er her : Eksperten : Programmering : Delphi..
Avatar billede hrc Mester
16. november 2003 - 13:57 #10
Den rigtige metode at hente joblisten frem på er ctrl-skift-esc.

Det løser bare ikke spørgerens problem. Umiddelbart ser dkn's eksempel lettest ud, mens hejhej's er flottest.
Avatar billede jesper_bn Nybegynder
17. november 2003 - 19:14 #11
Darkside > LUR mener du ikke lue (fra email fra lønneberg)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester