![]() |
|
|
#1
|
|||
|
|||
|
|
|
#2
|
||||
|
||||
|
Ищещь по FindWindow Скайп, затем дочернее окно для ввода информации - посылаешь сообщение с нужным текстом, затем кнопку - посылаешь сообщении о нажатии.
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
вообще-то, это можно сделать просто через COM-интерфейс скайпа. Просто импортни соотв. объект и пользуй. Делал - работало.
|
|
#5
|
|||
|
|||
|
Нет . скайп был простым примером!
|
|
#6
|
||||
|
||||
|
Примерно так:
Код:
function EnumChildProc(WndCtrl : HWND; lParam : Longint) : Boolean; stdcall;
var
szClass : array[Byte] of Char;
begin
GetClassName(WndCtrl, szClass, SizeOf(szClass));
if (lstrcmpi(szClass, 'BUTTON') = 0) then
begin
SendMessage(hWndCtrl, WM_COMMAND, 0, hWndCtrl);
end;
Result := True;
end;
//----------------------------------------------------------
procedure EnumChild(Wnd : HWND);
begin
if (not EnumChildWindows(Wnd, @EnumChildProc, 0)) then
Exit;
end;
|
|
#7
|
|||
|
|||
|
Cделай пример для калкулятора:
Код:
procedure TForm1.btn1Click(Sender: TObject ); var cwnd , Wnd: HWND; begin Wnd:=FindWindow(nil, 'Calculator'); ShowWindow(Findwindow(nil,'Calculator'),SW_RESTORE); end; |
|
#8
|
||||
|
||||
|
Примерно так, но напрямую в Edit:
Код:
var
Wnd : HWND;
function EnumChildProc(WndCtrl : HWND; lParam : Longint) : Boolean; stdcall;
var
szClass : array[Byte] of Char;
Buffer : array[Byte] of Char;
St : String;
begin
GetClassName(WndCtrl, szClass, SizeOf(szClass));
// Это через кнопку
if (lstrcmpi(szClass, 'BUTTON') = 0) then
begin
SendMessage(WndCtrl, WM_GETTEXT, SizeOf(Buffer), Longint(@Buffer));
if Buffer[0] <> #0 then
begin
St := Buffer;
if St = '4' then
SendMessage(WndCtrl, WM_COMMAND, 0, WndCtrl);
end;
end
// Напрямую в Edit
else if (lstrcmpi(szClass, 'EDIT') = 0) then
begin
St := '4';
SendMessage(WndCtrl, WM_SETTEXT, 0, Longint(PChar(St)))
end;
Result := True;
end;
//----------------------------------------------------------
procedure EnumChild(Wnd : HWND);
begin
if (not EnumChildWindows(Wnd, @EnumChildProc, 0)) then
Exit;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
Wnd: HWND;
begin
Wnd := FindWindow(NIL, 'Калькулятор');
if Wnd <> 0 then
begin
ShowWindow(Wnd, SW_RESTORE);
if not EnumChildWindows(Wnd, @EnumChildProc, 0) then
begin
Exit;
end;
end;
end;Последний раз редактировалось angvelem, 10.08.2011 в 01:05. |
|
#9
|
|||
|
|||
|
чтото он ругаеться
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Wnd : HWND;
implementation
{$R *.dfm}
procedure EnumChild(Wnd : HWND);
begin
if (not EnumChildWindows(Wnd, @EnumChildProc, 0)) then
Exit;
end;
procedure TForm1.btn1click(Sender: TObject);
var
Wnd: HWND;
begin
Wnd := FindWindow(NIL, '???????????');
if Wnd <> 0 then
begin
ShowWindow(Wnd, SW_RESTORE);
if not EnumChildWindows(Wnd, @EnumChildProc, 0) then
begin
Exit;
end;
end;
end;
end.Последний раз редактировалось criss009, 10.08.2011 в 01:20. |
|
#10
|
||||
|
||||
|
Вот архив:
|
|
#11
|
|||
|
|||
|
restore работает а вот написать не хочет
У тя 7? |
|
#12
|
||||
|
||||
|
Проверял на Дельфи 7 и 2009 + XP.
архив с exe-шником. Последний раз редактировалось angvelem, 10.08.2011 в 01:41. |