Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft (https://www.delphipraxis.net/154492-ueberpruefen-ob-word-excel-access-outlook-powerpoint-laeuft.html)

amigage 13. Sep 2010 12:29

Delphi-Version: 2009

Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft
 
Hallo,

unter http://www.swissdelphicenter.ch/de/showcode.php?id=294 findet sich ein schöner Code, wie man überpüft ob eines der o.g. Programme läuft.

Kann es sein, dass es ab Delphi 2009 nicht mehr funktioniert?

Delphi-Quellcode:
Result := GetActiveObject(ClassID, nil, Unknown) = S_OK;
gibt immer FALSE zurück, auch wenn Word und Excel geöffnet sind. Kann das jemand bestätigen und hat jemand eine alternative Lösung?

Danke!

amigage

DeddyH 13. Sep 2010 12:33

AW: Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft
 
Funktioniert es, wenn Du den Parameter "ClassName" als AnsiString deklarierst?

amigage 13. Sep 2010 12:51

AW: Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft
 
Hallo DeddyH,

nein, leider nicht. :? Obwohl es naheliegend gewesen wäre.

Ich habe den Code auch einmal mit einer älteren Delphi-Version kompiliert und da funktioniert es problemlos. Es muss also wirklich an Delphi 2009 liegen.

simmi 13. Sep 2010 13:14

AW: Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft
 
Versuche es einmal damit

Delphi-Quellcode:
function IsExeRunning(const AExeName: string): boolean;
var
  h: THandle;
  p: TProcessEntry32;
begin
  Result := False;

  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    Process32First(h, p);
    repeat
      Result := AnsiUpperCase(AExeName) = AnsiUpperCase(p.szExeFile);
    until Result or (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;

amigage 13. Sep 2010 13:19

AW: Überprüfen ob Word, Excel, Access, Outlook, Powerpoint läuft
 
Entwarnung!

Nach einem Neustart des System klappte die Abfrage auch in Delphi 2009.
Warum auch immer :lol: Vermutlich war der OLE-Server nicht mehr vorhanden?

@simmi: das ist natürlich eine noch bessere Variante zu überprüfen, ob ein bestimmtes Programm läuft. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz