На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Carrying Out Commands in a Server Application



A Win32-based application can use the WM_DDE_EXECUTE message to cause a certain command or series of commands to be carried out in another application. To do this, the client sends the server a WM_DDE_EXECUTE message containing a handle to a command string, as shown in the following example.

if (!(hCommand = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
sizeof(szCommandString) + 1)))
return;
if (!(lpCommand = GlobalLock(hCommand))) {
GlobalFree(hCommand);
return;
}

lstrcpy(lpCommand, szCommandString);
GlobalUnlock(hCommand);
if (!PostMessage(hwndServerDDE,
WM_DDE_EXECUTE,
(WPARAM) hwndClientDDE,
PackDDElParam(WM_DDE_EXECUTE, 0, (UINT) hCommand))) {
GlobalFree(hCommand);
FreeDDElParam(WM_DDE_EXECUTE, lParam);

}


In this example, the server attempts to carry out the specified command string. If it succeeds, the server sends the client a positive WM_DDE_ACK message; otherwise, it sends a negative WM_DDE_ACK message. This WM_DDE_ACK message reuses the hCommand handle passed in the original WM_DDE_EXECUTE message.
If the client's command execution string requests that the server terminate, the server should respond by sending a positive WM_DDE_ACK message and then post a WM_DDE_TERMINATE message before terminating. All other commands sent with a WM_DDE_EXECUTE message should be executed synchronously; that is, the server should send a WM_DDE_ACK message only after successfully completing the command.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

ВЫПОЛНЯЮЩИЕ Команды в Приложении Сервера



Базирующееся приложение Win32 может использовать сообщение WM_DDE_EXECUTE, чтобы вызывать определенную команду или серию команд, которые нужно выполнять в другом приложении. Для того, чтобы делать это, клиент посылает серверу сообщение WM_DDE_EXECUTE, содержащее ручку в командную строку, как показано в следующем примере.

если (!Возврат (hCommand = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, sizeof(szCommandString) + 1)));
если (!(lpCommand = GlobalLock(hCommand))) { GlobalFree(hCommand);
возврат;
}

lstrcpy(lpCommand, szCommandString);
GlobalUnlock(hCommand);
если (!PostMessage(hwndServerDDE, WM_DDE_EXECUTE, (WPARAM) hwndClientDDE, PackDDElParam(WM_DDE_EXECUTE, 0, (UINT) hCommand))) { GlobalFree(hCommand);
FreeDDElParam(WM_DDE_EXECUTE, lParam);

}


В этом примере, сервер пытается выполнять определенную командную строку. Если это добивается успеха, сервер посылает клиенту положительное сообщение WM_DDE_ACK; в противном случае, это посылает негативу сообщение WM_DDE_ACK. Эти ответчики сообщения WM_DDE_ACK ручка hCommand проходила в оригинальное сообщение WM_DDE_EXECUTE.
Если строка командного выполнения клиента запрашивает, чтобы сервер завершал, сервер должен отвечать посылая положительное сообщение WM_DDE_ACK и тогда пошлите сообщение WM_DDE_TERMINATE перед завершением. Все другие команды посланные сообщением WM_DDE_EXECUTE должны выполняться синхронно; то есть, сервер должен послать сообщение WM_DDE_ACK только после успешно завершать команды.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz