#include <vcl.h>
#include "UnitMain.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma hdrstop
HWND hWindow;
ShellExecute(NULL, NULL, "c:\calc.exe", NULL, NULL, SW_RESTORE);
hWindow = FindWindow(NULL, "Калькулятор Плюс");
PostMessage(hWindow,WM_SYSCOMMAND,SC_CLOSE,0); // не выполняется в *.exe
SendMessage(hWindow,WM_CLOSE, NULL, NULL); // выполняется и в Buildere и в *.exe
Почему при пошаговой отработке программы в Builderе команда
PostMessage(hWindow,WM_SYSCOMMAND,SC_CLOSE,0); выполняется а в *.exe шнике не выполняется
Код:
Да сделайте лог, и после каждого шага проверяйте GetLastError.
DartBobr честно говоря, из того, что Вы предложили, я ничего не понял - сейчас разбираюсь со второй в моей жизни программой на С++.
Пример использования:
Код:
int err = 0;
if (ShellExecute(NULL, NULL, "c:\calc.exe", NULL, NULL, SW_RESTORE) <= 32)
err = GetLastError();
if (ShellExecute(NULL, NULL, "c:\calc.exe", NULL, NULL, SW_RESTORE) <= 32)
err = GetLastError();
Подробнее смотрите в мсдн.
Код:
char f_err[10]= "0";
HWND hWindow; // окно "Калькулятор Плюс"
hWindow = FindWindow(NULL, "Калькулятор Плюс");
if (MoveWindow (hWindow, 600, 100, 500, NULL, NULL) <= 32)
{
err = GetLastError();
f = fopen("c:\error.txt", "a+");
f_err[0] = (char)err;
fwrite(f_err,1,5,f);
fclose(f);
}
HWND hWindow; // окно "Калькулятор Плюс"
hWindow = FindWindow(NULL, "Калькулятор Плюс");
if (MoveWindow (hWindow, 600, 100, 500, NULL, NULL) <= 32)
{
err = GetLastError();
f = fopen("c:\error.txt", "a+");
f_err[0] = (char)err;
fwrite(f_err,1,5,f);
fclose(f);
}
получил в ответ
ERROR_CALL_NOT_IMPLEMENTED
120 This function is not supported on this system.
Таким образом, в системе Builder функция переноски окна приложения поддерживается, а в моем WindowsXP не поддерживается!?
И еще, Вы не подскажете, что означают звездочки справа от заголовка темы в главном окне форума.