AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FindWindowEx - SysTabControl32

Ein Thema von eLse-maestro · begonnen am 24. Jan 2008 · letzter Beitrag vom 25. Jan 2008
Antwort Antwort
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#1

FindWindowEx - SysTabControl32

  Alt 24. Jan 2008, 22:23
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:
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;
Aber ich will ein Tab "anklicken" z.B. Desktop.
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: FindWindowEx - SysTabControl32

  Alt 24. Jan 2008, 23:14
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:
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);
Damit wird der 3 Tab nach vorne geholt.
Edit: Den Text der Tab kannst du ansonsten noch mit TCM_GETITEM auslesen.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: FindWindowEx - SysTabControl32

  Alt 24. Jan 2008, 23:20
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;
Thomas
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#4

Re: FindWindowEx - SysTabControl32

  Alt 25. Jan 2008, 13:56
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
  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 18:55 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