他アプリのタブのテキスト取得

解決


ppp  2008-02-29 08:29:26  No: 29958

こんばんわ。
turbodelphi+Winxpの環境です。
Lhaplusの環境設定画面のタブのテキストを取得したいのです。

function GetTabText(hWindow:HWND;indx:integer):string;
var
  tci: TTCItem;
  PC:PChar;
begin
  GetMem(PC,50);
  tci.mask := TCIF_TEXT;
  tci.pszText := PC;
  tci.cchTextMax := 50;
  SendMessage(hWindow,TCM_GETITEM,indx,LPARAM(@tci));
  SetString(result,PC,lstrlen(PC));
  FreeMem(PC);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  hwind : HWND;
  s : String;
begin
  hwind := FindWindow(nil,'Lhaplus');
  s := GetTabText(hwind,0);
  if s <> '' then  Begin
    ShowMessage(s);
  End;
end;

こうコードだと0番目のタブのテキストが取得できるはずなのですが
空白文字が返ってきています。
正直どこが悪いのか不明なのですが、どなたか御教授ねがいないでしょうか?
宜しくお願いいたします。


ppp  2008-02-29 09:13:46  No: 29959

すいません。
LhaplusはTPageControlでした。

取得するTabコントロールは
Windows標準の日付と時刻のプロパティに変えました。

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  hwind : HWND;
  hwind2 : HWND;
  s : String;
begin

  hwind := FindWindow(nil,'日付と時刻のプロパティ');
  hwind2 := FindWindowEX(hwind, 0, 'SysTabControl32', 0);
  s := GetTabText(hwind2,0);
  if s <> '' then  Begin
    ShowMessage(s);
  End;

end;

ボタンの中を上記のように変更しましたが、
SendMessage(hWindow,TCM_GETITEM,indx,LPARAM(@tci));
の行で落ちてしまいます。
Delphiではタブのテキスト取得は出来ないのでしょうか。


KHE00221  2008-02-29 09:37:53  No: 29960

ここでも見てくれ

http://yebisuya.dip.jp/WinTips/tips7.html


ppp  2008-02-29 20:10:43  No: 29961

ありがとうございます。
delphiに直してみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加