Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WinSpy > Fenster suchen (https://www.delphipraxis.net/37863-winspy-fenster-suchen.html)

endeffects 11. Jan 2005 16:07


WinSpy > Fenster suchen
 
Hallo,

ich bin heute zufällig über folgendes Posting zu WinSpy (ein sehr feines Tool) gestoßen:
http://www.delphipraxis.net/internal...findwindow+nil

Aus diesem Grund wollte ich mir ein kleines Programm basteln das meinen Langenscheid T1 (dt <> en)
Übersetzer ein wenig automatisiert. WinSpy erzeugt mir dann folgenden Code der laut
WinSpy auch funktionieren soll (leicht abgeändert):

Delphi-Quellcode:
function TForm1.FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  ChildNr := ChildNr - 1;
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Exit;
    Result := hChild;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
begin
  wnd := FindWindow('TForm_MTAloneMain','Langenscheidt T1 Version 5.0 ');
  wnd := FindWindowEx(wnd, 0, 'TLMDSplitterPanel', nil);
  wnd := FindWindowEx2(wnd,'TLMDSplitterPane', 3);
  wnd := FindWindowEx(wnd, 0, 'TJvCaptionPanel', nil); // wnd ist 0
  wnd := FindWindowEx(wnd, 0, 'TWPRichText', nil); //wnd ist 0
  if wnd <> 0 then
  begin
     showmessage('Window found. Handle: ' + IntToStr(wnd));
  end
  else showmessage('not found');
end;
Leider gibt mir meine Anwendung immer nur ein "not found" aus.
Der, die, das Handle von 'TJvCaptionPanel' und 'TWPRichText'
werden offensichtlich nicht gefunden. Kann mir vielleicht
Jemand erklären wie ich trotzdem in das Textfeld 'TWPRichText'
schreiben kann?


MfG

perle 11. Jan 2005 16:22

Re: WinSpy > Fenster suchen
 
wnd := FindWindowEx2(wnd,'TLMDSplitterPanel', 3);


das muss doch sicher hier TLMDSplitterPanel heissen

endeffects 11. Jan 2005 16:27

Re: WinSpy > Fenster suchen
 
also WinSpy sagt es heißt 'TLMDSplitterPane'
und wenn ich das L ergänze dann funktioniert
es trotzdem nicht :(

was mich wundert, weil WinSpy ja das entsprechende Feld
aufleuchten läßt um zu demonstrieren das es funktioniert hat

endeffects 11. Jan 2005 16:33

Re: WinSpy > Fenster suchen
 
mit dem code aus x-spy klappt es:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  wnd: HWND;
begin
  wnd := FindWindow('TForm_MTAloneMain', 'Langenscheidt T1 Version 5.0 ');
  wnd := FindWindowEx(wnd, 0, 'TLMDSplitterPanel', nil);
  wnd := FindWindowEx(wnd, 0, 'TLMDSplitterPane', nil);
  wnd := FindWindowEx(wnd, 0, 'TJvCaptionPanel', nil);
  wnd := FindWindowEx(wnd, 0, 'TWPRichText', nil);

  if wnd <> 0 then
  begin
     showmessage('found');
  end;
end;

perle 11. Jan 2005 16:47

Re: WinSpy > Fenster suchen
 
dann ist der fehler wohl in der FindWIndowex2

toms 25. Jan 2005 02:40

Re: WinSpy > Fenster suchen
 
Hi,

Werde dem WinSpy FindWindow Code-Problem nachgehen und fixen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.

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