AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HandleByExeName und GetWindowText bringt "Default IME" ?!
Thema durchsuchen
Ansicht
Themen-Optionen

HandleByExeName und GetWindowText bringt "Default IME" ?!

Ein Thema von heidsch · begonnen am 29. Sep 2008 · letzter Beitrag vom 30. Sep 2008
Antwort Antwort
heidsch

Registriert seit: 20. Jan 2005
3 Beiträge
 
#1

HandleByExeName und GetWindowText bringt "Default IME&q

  Alt 29. Sep 2008, 18:13
EDIT: Bitte den 3.post lesen....




hallo leute,

ich komm hier einfach nicht weiter. ich habe eine funktion gefunden,
welche mir das handle aus dem namen der exe ermittelt.
nur leider bekomme ich dann einen AccessViolation-Fehler. sieht einer
von euch den fehler?

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,TLHelp32,StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  WindowHandle: THandle;
  ProcessHandle: THandle;
  h:HWnd;

implementation

{$R *.dfm}

function MyEnumWindowProc(AHandle: THandle; LParam: LongWord): boolean;
stdcall;
var
  ProcessID: THandle;
begin
  ProcessID := 0;
  GetWindowThreadProcessID(AHandle, ProcessID);
  Result := not (ProcessID = LParam);
  if not Result then
    WindowHandle := AHandle;
end;

function GetWindowHandleByExeName(const AExeName: string): THandle;
var
  SnapShot: THandle;
  p: TProcessEntry32;
begin
  Result := 0;
  WindowHandle := 0;
  ProcessHandle := 0;
  p.dwSize := SizeOf(p);
  SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(SnapShot, p) then
      repeat
      if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile) then
        ProcessHandle := p.th32ProcessID;
      until (ProcessHandle <> 0) or not Process32Next(SnapShot, p);
    EnumWindows(@MyEnumWindowProc, ProcessHandle);
    GetParent(WindowHandle);
    Result := WindowHandle;
  finally
    CloseHandle(SnapShot);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var myBuf: array[0..250] of Char;
begin
WindowHandle := GetWindowHandleByExeName('putty.exe');
GetWindowText(WindowHandle, myBuf, sizeof(myBuf));
StatusBar1.SimpleText:=myBuf;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
self.Left:=round((screen.Width/2)-(self.Width/2));
self.Top:=0;
end;

end.
  Mit Zitat antworten Zitat
heidsch

Registriert seit: 20. Jan 2005
3 Beiträge
 
#2

Re: HandleByExeName verursacht AccessViolation

  Alt 29. Sep 2008, 18:35
oh gott,

vergisst es.....sorry mein fehler.

hier liegt der fehler:

Delphi-Quellcode:
WindowHandle := GetWindowHandleByExeName('putty.exe');
GetWindowText(WindowHandle, myBuf, sizeof(myBuf));
ich muß eine andere variable als "WindowHandle" nehmen....wird ja schon in
der funktion benutzt....

bitte den thread schließen !!!!
  Mit Zitat antworten Zitat
heidsch

Registriert seit: 20. Jan 2005
3 Beiträge
 
#3

Re: HandleByExeName verursacht AccessViolation

  Alt 30. Sep 2008, 16:19
jetzt hab ich doch noch ein problem:

Delphi-Quellcode:
WindowHandle := GetWindowHandleByExeName('putty.exe');
GetWindowText(WindowHandle, myBuf, sizeof(myBuf));
die funktion GetWindowText() liefert mir ja den fensternamen
des handles.
das klappt ja auch auf 2 von 3 rechnern.

der eine rechner bei dem es nicht klappt gibt mir als fensternamen "Default IME"
zurück.
alle 3 rechner sind winXP-Rechner. ich gehe davon aus, das es mit windows zu tun
hat, jedoch hab ich keinerlei ideen woher diese angabe stammt.

kennt jeman dvon euch dieses "Default IME"?

mfg heidsch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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