Вниз
Скачать: CL | DM;

Получить текст текущего окна на Delphi.   Найти похожие ветки 

← →
jeon ©   (2004-08-08 18:53) [0]

У меня 7-я версия делфи. Не могу получить текст текущего окна. Мне пишет, что в библиотеке user32.dll нету функции GetWindowText (!!!). Проделал то же самое на VB – работает. Может я где в коде ошибку допустил. Помогите плиз. Вот мой код (начиная с объявления API:

implementation
function GetWindowText(Wnd: HWnd; Str: PChar; MaxCount: Integer): Integer;
stdcall; external "user32.dll";

function GetWindowTextLength(Wnd: HWnd): Integer;
stdcall; external "user32.dll";
{$R *.dfm}

function GetForegroundWindow():Integer;
stdcall; external "user32.dll";

procedure TForm1.Button1Click(Sender: TObject);
var s:pchar;
res,buf:integer;
hnd:integer;

begin
hnd:=getforegroundwindow();
buf:=getwindowtextlength(hnd);
res:=getwindowtext(hnd,s,buf);
edit1.text:=s;
end;


← →
panov ©   (2004-08-08 19:01) [1]

Перед тем, как добавлять ветки в форум, надо правила почитать.
(Это о попытках задать один вопрос в несколько конференций)


← →
KSergey ©   (2004-08-08 21:05) [2]

Может вместо собственных лбъявлений взять да и написать
uses Window;


← →
KSergey ©   (2004-08-08 21:06) [3]

или
uses Windows;

Что-то запамятовал :)


← →
Sergey Kaminski ©   (2004-08-08 21:18) [4]

А там нет такой функции. Там есть такие:
GetWindowTextA,GetWindowTextW


← →
Cobalt ©   (2004-08-08 23:36) [5]

2 Sergey Kaminski ©   (08.08.04 21:18) [4]
Наглые враки!!!
Borland Delphi 7.0 Enterprise Vesion 7.0 (Build 4.453)
Windows.pas:

{$EXTERNALSYM GetWindowText}
function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall;
{$EXTERNALSYM GetWindowTextA}
function GetWindowTextA(hWnd: HWND; lpString: PAnsiChar; nMaxCount: Integer): Integer; stdcall;
{$EXTERNALSYM GetWindowTextW}
function GetWindowTextW(hWnd: HWND; lpString: PWideChar; nMaxCount: Integer): Integer; stdcall;


← →
Kirill35   (2004-08-08 23:44) [6]

не надо ничего явно вызывать из библиотек

procedure TForm1.Button1Click(Sender: TObject);
var Text: array [0..255] of Char;
 Handle: HWnd;
    Cap: String;
begin
Handle := GetForegroundWindow;
GetWindowText(Handle, Text, 255);
Cap := StrPas(Text);
ShowMessage(Cap);
end;


← →
VMcL ©   (2004-08-09 00:52) [7]

>>Cobalt ©  (08.08.04 23:36) [5]

>2 Sergey Kaminski ©  (08.08.04 21:18) [4]
>Наглые враки!!!

Щас LMD получишь. Смотри свой же пост. Нет в этой DLL никакой GetWindowText, а есть GetWindowTextA и GetWindowTextW.


← →
Cobalt ©   (2004-08-09 01:22) [8]

а вот MSDN чё-то не нашёл мне ничего :(
И вообще знает только эту функцию:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/wind owreference/windowfunctions/getwindowtext.asp


← →
Sergey Kaminski ©   (2004-08-09 03:06) [9]

2 Cobalt ©

Что-то мне сложно понять Ваши доводы.
Кстати, "эта" функция есть даже в Win32.hlp, не то что в MSDN (в MSDN тоже, разумеется,есть).

Вы не туда смотрели. Нужно смотреть какие имена импортиртирует из dll:

function GetWindowText; external user32 name "GetWindowTextA";
function GetWindowTextA; external user32 name "GetWindowTextA";
function GetWindowTextW; external user32 name "GetWindowTextW";

А не под какими они в интерфейс-секции указаны.

А чтобы впредь избежать подобных заявлений, советую самостоятельно разобраться что это за "A" & "W". И почему нет GetWindowText.
Сказано не со зла, просто совет.


← →
VMcL ©   (2004-08-09 10:57) [10]

>>Cobalt ©  (09.08.04 01:22) [8]

Windows 95/98/Me: GetWindowTextW is supported by the Microsoft® Layer for Unicode (MSLU). To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

...

Implemented as Unicode and ANSI versions on Windows NT, Windows 2000, Windows XP


Отсюда соотвествующий вывод.


← →
Sergey Kaminski ©   (2004-08-10 02:27) [11]

VMcL ©   (09.08.04 10:57) [10]

Это было домашнее задание Cobalt"а :))))


← →
Cobalt ©   (2004-08-10 12:37) [12]

2 VMcL ©   (09.08.04 10:57) [10]
Хм, интересно, откуда ты это раскопал?
я ни в SDK Reference, ни в MSDN не нашёл
А насчёт функций A/W я знал :)

2 Sergey Kaminski ©
Я имел в виду что она (функция) есть в модуле Windows.pas.
А вот в MS SDK Help Files в Win32.hlp я этого (GetWindowTextA/W) не нашёл (D7)


← →
VMcL ©   (2004-08-10 13:08) [13]

>>Cobalt ©  (10.08.04 12:37) [12]

>Хм, интересно, откуда ты это раскопал?

В MSDN.

>А вот в MS SDK Help Files в Win32.hlp я этого (GetWindowTextA/W) не нашёл (D7)

Само собой. В Help"е - GetWindowText(). А поскольку есть две версии ANSI и Unicode, то значит реальные имена GetWindowTextA и GetWindowTextW.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.02 c
14-1094378919
Voland
2004-09-05 14:08
2004.09.26
как отключить explorer в винХР


3-1093507041
Crazy_Student
2004-08-26 11:57
2004.09.26
Связка Delphi+Oracle


1-1094708202
Layner
2004-09-09 09:36
2004.09.26
Как узнать, что PopupMenu закрылся?


1-1094822942
denis24
2004-09-10 17:29
2004.09.26
Скролинг в listview


9-1085198433
lokid7
2004-05-22 08:00
2004.09.26
Книги по созданию игр в электронном виде




   Наверх