Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

REPEAT UNTIL <Завершение работы WINDOWS>   Найти похожие ветки 

 
IAMDANIL ©   (2005-11-22 14:13) [0]

Как в консоли написать такой код?


 
Ega23 ©   (2005-11-22 14:19) [1]

WriteLn("REPEAT UNTIL <Завершение работы WINDOWS>");


 
Digitman ©   (2005-11-22 14:20) [2]

создай top-level-окно, организуй цикл

ожидания/выборки/диспетчеризации/обработки оконных сообщений

поступление окну WM_QUERYENDSESSION-сообщения есть факт попытки завершения Windows-сессии


 
IAMDANIL ©   (2005-11-22 14:22) [3]


> создай top-level-окно, организуй цикл
>
> ожидания/выборки/диспетчеризации/обработки оконных сообщений
>
> поступление окну WM_QUERYENDSESSION-сообщения есть факт
> попытки завершения Windows-сессии

А можно пример?..


 
Leonid Troyanovsky ©   (2005-11-22 14:27) [4]


> IAMDANIL ©   (22.11.05 14:22) [3]

> А можно пример?..


http://groups.google.com/group/fido7.ru.delphi.chainik/msg/23e83fdf49a13df2

Только надо помнить, что обработчик выполняется в
контексте другого потока.

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-22 14:35) [5]

Там как-то непонятно...
Как завершить свою прогу?
Дайте пожалуйста пример...


 
clickmaker ©   (2005-11-22 14:40) [6]


> Как завершить свою прогу?

эээ... ну много способов есть
MainForm.Close
Application.Terminate

begin

 // здесь она завершается
end;

выбирай на вкус


 
IAMDANIL ©   (2005-11-22 14:43) [7]


> эээ... ну много способов есть
> MainForm.Close
> Application.Terminate
>
> begin
>
>  // здесь она завершается
> end;
>
> выбирай на вкус


Как её завершить при завершении винд?
Она у меня консольная


 
clickmaker ©   (2005-11-22 14:50) [8]


> Как её завершить при завершении винд?


SetConsoleCtrlHandler()


 
Leonid Troyanovsky ©   (2005-11-22 15:11) [9]


> IAMDANIL ©   (22.11.05 14:35) [5]


> Там как-то непонятно...

Чего непонятно?

> Как завершить свою прогу?

В обработчике CtrlHandler есть события
   CTRL_LOGOFF_EVENT: ;
   CTRL_SHUTDOWN_EVENT: ;

etc.

Там могут быть, например, установлены нужное значение для
выхода из цикла repeat (while).
Хотя, консольному приложению приличней реализовать цикл
ожидания ввода (read*) или события (wait*), а не переменной.

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-23 11:10) [10]


> В обработчике CtrlHandler есть события
>    CTRL_LOGOFF_EVENT: ;
>    CTRL_SHUTDOWN_EVENT: ;
>
> etc.

Надо писать CTRL_SHUTDOWN_EVENT: flag:=true;
repeat until flag
так?


 
Leonid Troyanovsky ©   (2005-11-23 15:24) [11]


> IAMDANIL ©   (23.11.05 11:10) [10]

> Надо писать CTRL_SHUTDOWN_EVENT: flag:=true;
> repeat until flag



Скорее даже в CTRL_LOGOFF_EVENT.
А что внутри цикла?

--
Regards, LVT.


 
IAMDANIL ©   (2005-11-24 14:00) [12]


> А что внутри цикла?

Внутри цикла ничего, просто мне надо дождатться завершения W. и потом, перед завершением выполнить какие-то действия...
если не трудно, дайте .DPR с примером (именно этим)


 
umbra ©   (2005-11-24 14:14) [13]

так ее ж винда завершит, когда выключаться будет. зачем мучиться?


 
Morgoth_   (2005-11-24 14:16) [14]

На работе забывал флешку постоянно с нужной инфой и написал, ненужное сам выкинь ))):

program Quitwnd;

uses
 windows,
 messages;

var   wc, wc2 : TWndClassEx;
wndMain, wnd2 : HWND;
Mesg :    TMsg;
HDCpaint:hdc;
 RECT: Trect ;
ps: PAINTSTRUCT;

function WindowProc(wnd:HWND; Msg : UINT; wParam: WPARAM; lParam: LPARAM):LRESULT;
stdcall;
begin
case msg of
WM_PAINT :
 begin
   hdcpaint := BeginPaint (wnd2,ps) ;
   GetClientRect (wnd2, rect) ;
   CreatePen(bs_solid, 3, PaletteRGB(0,0,0));
   SelectObject(hdcpaint,CreateSolidBrush(0));
   rect.Left:=0;
   rect.Top:=0;
   rect.Right:=380;
   rect.Bottom:=30;
   rectangle(hdcpaint,0,0,380,380);
   SetTextColor(hdcpaint, RGB(255,255,255));
   SetBkColor(hdcpaint, RGB(255,0,0));
   DrawText (hdcpaint, "НЕ ЗАБУДЬ ВЫНУТЬ ФЛЭШКУ!!! ПОНЯЛ?", -1, rect,
   DT_SINGLELINE or DT_CENTER or DT_VCENTER) ;
   EndPaint (wndMain, ps) ;
 end;

WM_ENDSESSION:
 begin
   ShowWindow(wnd2, cmdShow);

 end;

WM_COMMAND:
 begin
 result := 0;
 end;

WM_QUERYENDSESSION  :
begin
 result := 0;
end;

WM_DESTROY :
 begin
  postquitmessage(0);
  Result:=0;
  exit;
 end;
else Result:=DefWindowProc(wnd,msg,wParam,lParam);
end;
end;

var xPos,yPos,nWidth,nHeight : Integer;

begin
 {окно}
with wc do
begin
  cbSize:=sizeof(wc);
  style:=CS_HREDRAW or CS_VREDRAW;
  lpfnWndProc:=@WindowProc;
  cbClsExtra:=0;
  cbWndExtra:=0;
  hInstance:=HInstance;
  hIcon:=0;
  hCursor:=LoadCursor(0,IDC_ARROW);
  hbrBackground:=COLOR_BTNFACE+1;
  lpszMenuName:=0;
  lpszClassName:="quitwnd : Main";
end;

with wc2 do
begin
  cbSize:=sizeof(wc);
  style:=CS_HREDRAW or CS_VREDRAW;
  lpfnWndProc:=@WindowProc;
  cbClsExtra:=0;
  cbWndExtra:=0;
  hInstance:=HInstance;
  hIcon:=0;
  hCursor:=LoadCursor(0,IDC_ARROW);
  hbrBackground:=COLOR_BTNFACE+1;
  lpszMenuName:=0;
  lpszClassName:="quitwnd : mess";
end;
RegisterClassEx(wc);
RegisterClassEx(wc2);

nWidth:=380;
nHeight:=60;
xPos:=getsystemmetrics(SM_CXSCREEN) div 2 - NWidth div 2;
yPos:=getsystemmetrics(SM_CYSCREEN) div 2 - NHeight div 2;

wndMain:=CreateWindowEx(WS_EX_CLIENTEDGE,
  "quitwnd : Main","Внимание!!!",ws_overlapped or ws_sysmenu,xPos,yPos,nWidth,nHeight,0,0,0,nil);

wnd2 := CreateWindowEx(WS_EX_CLIENTEDGE,
  "quitwnd : mess","Внимание!!!",ws_overlapped or ws_sysmenu,xPos,yPos,nWidth,nHeight,0,0,0,nil);
ShowWindow(wndMain,sw_Hide);

while GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
end;
end.


 
IAMDANIL ©   (2005-11-24 14:20) [15]


> так ее ж винда завершит, когда выключаться будет. зачем
> мучиться?

Dj gперых мне надо SAVE DATA а во вторых у меня появляется "ПРОГА не огтвечает" нно две минуты назад всё отладил и работает!
*** Всем спасибо ***



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

Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
10-1108936293
GanibalLector
2005-02-21 00:51
2005.12.11
Объектная модель MOffice


14-1132392037
Separator
2005-11-19 12:20
2005.12.11
XML


14-1132221764
Crazy_Diman
2005-11-17 13:02
2005.12.11
Графика


14-1132307208
Andersen
2005-11-18 12:46
2005.12.11
Сериал Есенин


6-1125535648
DeathLess
2005-09-01 04:47
2005.12.11
Скачать файл с докачкой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский