Announcement

Collapse
No announcement yet.

Name der aktiven Anwendung prüfen (NT)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Name der aktiven Anwendung prüfen (NT)

    obwohl ich ziemlich lange gesucht habe, konnte ich folgendes problem nicht lösen:

    ich brauche eine funktion, die mir sagt, ob das aktive fenster zu einer bestimmten anwendung gehört. mit dieser funktion kann ich dann feststellen, ob das aktive fenster zu einer von mehreren bestimmten anwendungen gehört. also genauer:

    eingabe: name einer anwendung (z.b. "NOTEPAD.EXE")<br>
    ausgabe: aktiv ja/nein

    ich hab bereits (dank nicoDE) eine funktion, die mir zu dem namen der anwendung die PIDs zurückgibt. ich müßte jetzt also nur noch feststellen, ob dieser prozeß aktiv ist. oder wäre es nicht sinnvoller, andersrum zu gehen und das aktive fenster (windowsweit) zu bestimmen und dessen anwendungsname mit der eingabe zu vergleichen?<br>
    soll jedenfalls unter NT laufen (am besten ohne admin-rechte)

    Wer weiß Rat?<br>
    Sven

  • #2
    Hallo,

    man könnte folgendes machen: <br>
    1. <b>GetForegroundWindow</b> ermittelt Fenster-Handle, <br>
    2. <b>GetWindowThreadProcessId</b> tauscht Fenster-Handle gegen Process-ID um. <br>
    3. <b>CreateToolhelp32Snapshot</b>(TH32CS_SNAPPROCESS..) vergleicht unter Windows 9x und Windows 2000 die Prozess IDs und liest dann den Pfad der EXE aus

    Comment


    • #3
      danke für die schnelle antwort.<br>
      zu 1+2: werd ich mal versuchen.<br>
      zu 3: ich hab aber kein win9x oder 2000, sondern NT 4.0 - geht es da auch?

      Sve

      Comment


      • #4
        hallo nochmal. inzwischen hab ich 1+2 umgesetzt:<br>
        var<br>
        wnd: hwnd;<br>
        pid: dword;<br>
        Snapshot: THandle;<br>
        begin<br>
        wnd := GetForegroundWindow();<br>
        pid := GetWindowThreadProcessId(wnd, NIL);<br>
        Snapshot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, pid);<br>
        <b> // wie komme ich hier an den namen der anwendung? nicht mit<br>
        // Label1.Caption := Snapshot.szExeFile;</b><br>
        CloseHandle(Snapshot);<br>

        damit hab ich nun die pid des aktiven fensters. leider komme ich mit CreateToolhelp32Snapshot() nicht ganz zurecht. vielleicht kann jemand auf ein beispiel verweisen, wo mit dieser funktion gearbeitet wird?<br>
        den beitrag "Prozesse (Win95/NT) erkennen, welche laufen", auf den Andreas Kosch verweist, konnte ich nicht finden.

        Danke,<br>
        Sve

        Comment


        • #5
          Hm,

          CreateToolhelp32SnapShot steht meiner Meinung nach unter 2000/NT nicht zur Verfügung. Stattdessen sollte das PSAPI benutzt werden.

          Ich glaube die JCL hat da ein par funktionen: http://www.Delphi-JEDI.org

          Gruß Hage

          Comment


          • #6
            hallo Hagen,<br>
            zumindest die Verwendung von CreateToolHelp32Snapshot() meckert der Compiler nicht an (D5 Enterprise). Nur was mache ich mit dem Snapshot?

            Unter http://www.Delphi-JEDI.org hab ich nachgesehen. Leider ist die Seite ziemlich groß, und bietet keine Such-Funktion. Für jemanden, der nicht genau weiß, was er sucht, ein Problem. Ich hab im Site-Directory quasi alle Punkte durch und einige interessante Sachen gefunden (Danke;o), konnte aber das Problem nicht lösen.. Vielleicht könntest du ein bischen präziser werden?

            Sven

            PS: daß der Compiler nicht über CreateToolHelp32Snapshot() meckert bedeutet noch nicht, daß das später funktioniert, richtig

            Comment


            • #7
              Hi

              download die neuste JCL = JEDI Code Library
              links im Navigator zu finden

              Gruß Hage

              Comment


              • #8
                ** solved **<br>
                danke Hagen, download, unzip, 2 Minuten Suche..<br>
                <b>function GetProcessNameFromWnd(Wnd: HWND): string;</b><br>
                ..sollte den anforderungen voll genügen.

                Sve

                Comment

                Working...
                X