Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Warum Project1.exe al sProzess in Großbuchstaben? (https://www.delphipraxis.net/63756-warum-project1-exe-al-sprozess-grossbuchstaben.html)

PASST 22. Feb 2006 15:02


Warum Project1.exe al sProzess in Großbuchstaben?
 
Hi NG,

Delphi 4 (update 3), WinXP Pro (SP2)

Warum zeigt paramstr(0) die aktuelle Anwendung in Groß/Kleinbuchstaben, während die Anwendung in der Prozessliste, die ich mithilfe des Codes erstelle, den Prozess in Großbuchstaben anzeigt?

Gruß
Peter

NicoDE 22. Feb 2006 15:07

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Weil zwei unterschiedliche Informationen ausgelesen werden:
a) der Dateipfad des Moduls mit dem der Prozess erzeugt wurde
b) der interne 'Name' des Prozesses, den der Kernel sich merkt

PASST 22. Feb 2006 15:13

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Das ist klar, das zwei verschiedene Quellen gelesen werden. Es irritiert mich allerdings, dass in den Prozessen weiterhin Anwendungen laufen, die nicht ausschließlich in Großbuchtstaben geschrieben sind.

PASST 22. Feb 2006 15:38

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Jetzt bin ich komplett verwirrt. Auf meinem Rechner WinXP Pro wird der Prozess in Großbuchstaben gelistet. Auf einem W2k3 Server wird der Prozess in GroßKleinBuchstaben gelistet.

Hat jemand eine Idee woran das liegen könnte?
Gibt es da eine Regelmäßigkeit, die ich evtl. berücksichtigen muss?

Gruß
Peter

Luckie 22. Feb 2006 15:46

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Warum ist es dir so wichtig ob Groß- oder Kleinbuchstaben?

PASST 22. Feb 2006 15:52

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Ich möchte per TerminateProcess den Prozess anhand des Prozessnamens identifizieren und killen. Es ist leider ein Unterschied wie die Schreibweise eines Prozesses ist.

SirThornberry 22. Feb 2006 15:53

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
warum machst du dir deswegen soviel gedanken? nutze einfach AnsiLowerCase/AnsiUpperCase bzw. die dazugehörigen Api-Funktionen.

PASST 22. Feb 2006 16:04

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
Auf die Idee bin ich auch gekommen. Ich weiß aber nicht wie ich das im Code-Bsp für GetProcessID umsetzen kann.

Delphi-Quellcode:
function TForm1.GetProcessID(sProcName: String): Integer;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := -1;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then exit;

  pe32.dwSize := SizeOf(ProcessEntry32);

  { wenn es geklappt hat }
  if Process32First(hProcSnap, pe32) = true then
    { und los geht's: Prozess suchen }
    while Process32Next(hProcSnap, pe32) = true do
    begin
      if pos(sProcName, pe32.szExeFile) <> 0 then
      { if pos(uppercase(sProcName), uppercase(pe32.szExeFile)) <> 0 then }
        result := pe32.th32ProcessID;
    end;
  CloseHandle(hProcSnap);
end;
Wäre das von mir eingefügte Uppercase so machbar?

Gruß
Peter

SirThornberry 22. Feb 2006 17:21

Re: Warum Project1.exe al sProzess in Großbuchstaben?
 
wäre machbar. Sinnvoller wäre es jedoch so (damit uppercase nicht so oft aufgerufen wird):
Delphi-Quellcode:
function TForm1.GetProcessID(sProcName: String): Integer;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  sProcName := AnsiUpperCase(sProcName);
  result := -1;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then exit;

  pe32.dwSize := SizeOf(ProcessEntry32);

  { wenn es geklappt hat } 
  if Process32First(hProcSnap, pe32) = true then
    { und los geht's: Prozess suchen } 
    while Process32Next(hProcSnap, pe32) = true do
    begin
      if pos(sProcName, AnsiUpperCase(pe32.szExeFile)) <> 0 then
        result := pe32.th32ProcessID;
    end;
  CloseHandle(hProcSnap);
end;
also für "sProcName" nur ein einziges mal Uppercase (bzw. AnsiUpperCase) verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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