::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  구창민(2003-03-14 12:22:28, Hit : 5009, Vote : 1200
 http://www.delphi.pe.kr
 외부 프로그램의 상태표시줄의 Text 가져오기

[팁]외부 프로그램의 상태표시줄의 Text 가져오기


//안녕하세여~ 구창민입니다.

//요런 특별한 작업을 해야하는 경우가 생길수도 있겟지여..ㅋㅋ

//아래는 인터넷부라쟈의 상태표시줄의 내용을 가져오는 예제입니다.

//그럼~ 즐거운 프로그래밍 하시길~~

function GetStatusText(wndWindow: THandle;
  StatusBarClassName: string;
  PanelIndex: Byte): string;
var
  WndStatusBar: THandle;
  StatusBarText: array[0..$FFF] of Char;
begin
  Result := '';
  WndStatusBar := FindWindowEx(wndWindow, 0, PChar(StatusBarClassName), nil);
  if WndStatusBar <> 0 then
  begin
    if PanelIndex = 0 then
      SendMessage(WndStatusBar, WM_GETTEXT, $FFF, Longint(@StatusBarText))
    else
      SendMessage(WndStatusBar, SB_GETTEXT, PanelIndex, Longint(@StatusBarText));
    Result := StrPas(StatusBarText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Read statustext from Internet Explorer
  label1.Caption := GetStatusText(FindWindow('IEFrame', nil), 'msctls_statusbar32', 0);
  // Also works with a TStatusBar
  Label2.Caption := GetStatusText(Form1.Handle, 'TStatusBar', 0);
end;


{***************************************************}

{ 2.
    To Read the statusbar in another process, use this function:
    Damit kann man auch in einem anderen Prozess den Statusbar Text bei Subpanels auslesen
}

uses
  CommCtrl, uProcessMemMgr { from Download };


function GetStatusBarText(hStatusBarHandle: HWND; PanelNumber: Integer): string;
var
  PMM: TProcessMemMgr;
  NumberOfPanels, Len: Integer;
  PrcBuf: PChar;
  PartText: string;
begin
  if hStatusBarHandle = 0 then Exit;
  PMM := CreateProcessMemMgrForWnd(hStatusBarHandle);
  try
    NumberOfPanels := SendMessage(hStatusBarHandle, SB_GETPARTS, 0, 0);
    if PanelNumber < NumberOfPanels then
    begin
      Len := LOWORD(SendMessage(hStatusBarHandle, SB_GETTEXTLENGTH, PanelNumber, 0));
      if Len > 0 then
      begin
        PrcBuf := PMM.AllocMem(Len + 1);
        SendMessage(hStatusBarHandle, SB_GETTEXT, PanelNumber, Longint(PrcBuf));
        Result := PMM.ReadStr(PrcBuf);
        PMM.FreeMem(PrcBuf);
      end
      else
      begin
        Result := '';
      end;
    end;
  finally
    PMM.Free;
  end;
end;

// Example to read the statusbar text of the explorer.exe
// Beispiel, um den Statusbar text des explorers auszulesen
procedure TForm1.Timer1Timer(Sender: TObject);
var
  hWindow, hStatusBarHandle: HWND;
begin
  hWindow := FindWindow('ExploreWClass', nil);
  if FensterHandle = 0 then Exit;
  hStatusBarHandle := FindWindowEx(hWindow, 0, 'msctls_statusbar32', nil);
  label1.Caption := GetStatusBarText(hStatusBarHandle, 2);
end;








731   [COM/OLE] 떠있는 모든 Microsoft Internet Explorer 의 html 불러오기  김영대 2003/03/30 5544 1360
730   [윈도우즈 API] IE의 "즐겨찾기 구성" 화면 띄우기  김영대 2003/03/30 5537 1831
729   [윈도우즈 API] 데스크탑의 현재 커서위치의 타이틀명과 클래스명 구하기  김영대 2003/03/29 4233 1089
728   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4469 1263
727   [시스템] 윈도우즈 전체의 마우스/키보드 입력 금지  김영대 2003/03/29 5066 1292
726   [네트웍/인터넷] 인터넷에 접속되어 있는지 검사하기  김영대 2003/03/29 5086 1249
725   [일반/컴포넌트] TMemo 스크롤 다운 시키기  김영대 2003/03/29 4569 1322
724   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 4977 1273
723   [윈도우즈 API] "시작"->"프로그램" 메뉴에 폴더 추가하기  김영대 2003/03/29 4731 1207
722   [윈도우즈 API] 폼이 Minimized 되었을때 깜박이게 하기  김영대 2003/03/29 5966 1583
721   [일반/컴포넌트] ListBox에서 마우스 이동시 아이템을 힌트로 보여주기  김영대 2003/03/27 3993 1058
720   [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/27 4973 1210
719   [윈도우즈 API] 액티브 데스크탑에 웹 컨텐트가 표시중인지 알기  김영대 2003/03/27 4090 1139
718   [윈도우즈 API] 작업표시줄의 시계 감추기/보이기  김영대 2003/03/27 7046 1923
717   [일반/컴포넌트] 커서(Cursor)의 이미지 구하기  김영대 2003/03/27 4434 1230
716   [윈도우즈 API] 스크린 세이버 On/Off  김영대 2003/03/27 3904 981
715   [윈도우즈 API] 휴지통 비우기  김영대 2003/03/27 5022 1247
714   [일반/컴포넌트] IE Toolbar 에 버튼 올리기  김영대 2003/03/26 4618 1164
713   [일반/컴포넌트] 기본 Popup Memu 띄우지 않기  김영대 2003/03/26 3649 971
712   [윈도우즈 API] "임시 인터넷 파일" 전부 지우기  김영대 2003/03/26 5060 1202
711   [일반/컴포넌트] 설치된 모든 프로그램 읽어오기  김영대 2003/03/26 5466 1398
710   [데이터베이스] DBGrid 의 현재 커서의 행/열 구하기  김영대 2003/03/26 4824 1209
709   [일반/컴포넌트] INF 파일 설치하기  김영대 2003/03/26 5010 1229
708   [데이터베이스] BDE Alias 없이 Database 동적으로 연결하기  신훈재 2003/03/24 4700 1051
707   [COM/OLE] Win2k, Win Xp - Active X - Dax error : Access violation해결(IE상에서)  신훈재 2003/03/20 6461 1080
706   [데이터베이스] ORA-12571: TNS:packet writer failure  김영대 2003/03/19 5084 1030
705   [데이터베이스] DBGrid 의 모든 Row 를 Select 시키기(SelectAll)  김영대 2003/03/18 4167 993
704   [데이터베이스] index file의 갯수와 성능 문제  김영대 2003/03/17 5081 1310
703   [일반/컴포넌트] ListView에 확장자별 아이콘 넣기  신훈재 2003/03/15 5985 1081
702   [일반/컴포넌트] ScrollBox 에 배경그림 넣기  김영대 2003/03/14 3769 1024
701   [시스템] '응답없음' 프로세서를 감지하는 잼나는 방법  구창민 2003/03/14 7396 1205
700   [윈도우즈 API] 입력을 기다리는 풀스크린 콘솔 윈도우 만들어 보기  구창민 2003/03/14 4474 1055
699   [일반/컴포넌트] 특정 레지스트리 키 의 모든 목록을 한방에! 읽어오기  구창민 2003/03/14 4581 904
698   [일반/컴포넌트] 트레이 아이콘에 풍선 힌트 보여주기  구창민 2003/03/14 6056 1185
  [윈도우즈 API] 외부 프로그램의 상태표시줄의 Text 가져오기  구창민 2003/03/14 5009 1200
696   [시스템] IP Address 윈도우 폼위에 만들어보기  구창민 2003/03/14 5151 1177
695   [시스템] 특정 DLL 의 함수목록을 구해보자.  구창민 2003/03/14 5197 1117
694   [시스템] 쓰레드 내에서 폼을 생성해보자  구창민 2003/03/14 5045 1031
693   [윈도우즈 API] 외부 프로그램 모달 창처럼 띄워서 종료될때 기다리기(시점 알기)  구창민 2003/03/14 5204 1173
692   [일반/컴포넌트] 컴포넌트에 오픈다이얼로그를 띄우는 속성 만드는 방법  구창민 2003/03/14 3762 946

[1][2][3][4][5][6] 7 [8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero