Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Вниз

Хэндл чего я взял? 


Baz   (2002-02-19 15:14) [0]

Здравствуйте, мастера.
В целях тренировки пишу такую программу: по нажатию кнопки вызывается функция из ДЛЛ которая должна спрятать исходную форму ‘MAIN_FRM’. Вот код целиком:

library DLL_TRY_2;
uses Windows, Forms, DLL_CONTROL_2;
{$R *.RES}
procedure HIDE_WINDOW(MY_HANDLE:THandle);
begin
// MAIN_FRM.Visible:=false;
// MAIN_FRM.Hide;
ShowWindow(MY_HANDLE,SW_HIDE);
end;
exports HIDE_WINDOW;
begin
end.
********************
unit DLL_CONTROL_2;
interface
uses Windows, Forms, Classes, Controls, StdCtrls;
type
TMAIN_FRM = class(TForm)
START_BTTN: TButton;
procedure START_BTTNClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var MAIN_FRM: TMAIN_FRM;
implementation
{$R *.DFM}

procedure TMAIN_FRM.START_BTTNClick(Sender: TObject);
var MY_HANDLE:THandle;
DLL_HANDLE:THandle;
HIDE_WINDOW:procedure(MY_HANDLE:THandle);
begin
DLL_HANDLE:=LoadLibrary("DLL_TRY_2");
MY_HANDLE:=Application.Handle;
@HIDE_WINDOW:=GetProcAddress(DLL_HANDLE,"HIDE_WINDOW");
HIDE_WINDOW(MY_HANDLE);
FreeLibrary(DLL_HANDLE);
end;

end.
************************
Происходит следующее. Если раскоментировать команду MAIN_FRM.Visible:=false или MAIN_FRM.Hide, то выдается ошибка, по команде ShowWindow(MY_HANDLE,SW_HIDE) ничего не происходит. А при вставке команды ShowWindow(MY_HANDLE,SW_MAXIMIZE) почему-то исчезают все открытые окна и таскбар. Виден рабочий стол (обои, но ни одной иконки), видно исходное окно прежнего размера, а в самом верху экрана виден заголовок окна ‘DLL_CONTROL_PRJ_2’ (а это имя моего проекта) максимизированного размера. Может ли кто-нибудь пояснить, что происходит? Я что-то напутал с хэндлом MY_HANDLE? Сорри за длинность.



Pete   (2002-02-19 15:25) [1]

Может берешь handle:=0, то это DeskTop... проверь...



DieHard   (2002-02-19 15:27) [2]

Вместо
MY_HANDLE:=Application.Handle;
напиши
MY_HANDLE:=Self.Handle;
а то ты работал с невидимым окном приложения



Юрий Федоров   (2002-02-19 15:27) [3]

Наверно, все таки
MY_HANDLE:=Handle;



Baz   (2002-02-20 08:11) [4]

СПАСИБО! Особенно 2 DieHard !




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.018 c
1-19146           lightix               2002-02-21 12:06  2002.03.07  
Как передать параметр в программу ?


4-19394           Remy                  2002-01-06 23:19  2002.03.07  
Помогите завершить все работающие задачи без всяких уведомлений...


1-19138           cahek20000            2002-02-13 18:55  2002.03.07  
Синхронный скролинг


1-19145           sammy                 2002-02-07 08:53  2002.03.07  
win sdk


1-19144           ZEE                   2002-02-06 04:14  2002.03.07  
Создание/удаление компонентов в RunTime