![]() |
FindWindowEx - SysTabControl32
Hey Leute,
also ich habe folgendes vor: Ich habe VNC 4.1, und in den Einstellungen kann man ja sehr viel ändern. (Ports etc.) Mein Problem ist nur, das dort ein TabControl ist, womit man zwischen verschiedenen Tabs Wechseln kann. Und ich kann nicht auf ein anderen Tab zugreifen. Habe das handle von SysTabControl32 mit FindWindowEx schon herausgefunden, aber weiter komme ich nicht - es ist zum Haareausreißen :( Wollte mal SysTabControl auslesen.. habe aber nichts weiter bekommen als das handle, dass ich eh schon habe..
Delphi-Quellcode:
Aber ich will ein Tab "anklicken" z.B. Desktop.
function EnumChildProc(wnd:hwnd; lparam:integer):bool;stdcall;
var listbox:Tlistbox; classname:array[0..127] of char; begin listbox:=TListbox(lparam); getclassname(wnd,classname,127); listbox.Items.add('$'+inttohex(wnd,8)+'='+classname); end; Möchte aber nicht auf die "mausklick" methode umsteigen, sonst hätte ich ja es schon lange geschafft ;O (sitze seit gestern dran- mit schlaf-schul pause ;D) danke für eure antworten |
Re: FindWindowEx - SysTabControl32
Hi,
ich habe es mal am Dialog "Eigenschaften von Anzeige" ausprobiert also auf dem Desktop rechtsklicken und dann das Menü Eigenschaften wählen.
Delphi-Quellcode:
Damit wird der 3 Tab nach vorne geholt.
uses commctrl;
var h: HWND; Count: integer; const NewIndex= 2; begin h:= FindWindow(nil, 'Eigenschaften von Anzeige'); if h > 0 then begin h:= FindWindowEx(h, 0, 'SysTabControl32', nil); if h > 0 then SendMessage(h, TCM_SETCURFOCUS, NewIndex, 0) else MessageDlg('SysTabControl Handle = 0', mtError, [mbOk], 0); end else MessageDlg('Handle = 0', mtError, [mbOk], 0); Edit: Den Text der Tab kannst du ansonsten noch mit TCM_GETITEM auslesen. |
Re: FindWindowEx - SysTabControl32
und beim VNC kannst du es analog machen:
Delphi-Quellcode:
var
wndVNC, wndSysTabCtrl: HWND; iTabNr: ShortInt; begin wndVNC := FindWindow('#32770', 'VNC Server Properties (User-Mode)'); if wndVNC <> 0 then begin wndSysTabCtrl := FindWindowEx(wndVNC, 0, 'SysTabControl32', nil); if wndSysTabCtrl <> 0 then begin SendMessage(wndSysTabCtrl, TCM_SETCURSEL, 4, 0); // Tab "Desktop" hat Index 4 end; end; end; |
Re: FindWindowEx - SysTabControl32
danke,
ich habe mal toms variante probiert, und sie klappt auch. Ich kriege den Desktop-tab ausgewählt, aber ich kann immer noch nicht auf die komponenten zugreifen- Nur wenn ich Manuell drauf drücke dann finde ich auch das handle von den Desktop-Settings. oder bleibt mir nichts anderes übrig als einen mausklick zu simulieren? EDIT: Ok bitsetters variante klappt, auch in der handle hinsicht.. vielen dank :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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-2025 by Thomas Breitkreuz