@fufaf

Почему WinExec не открывает программу exe Windows 7 (64 Бит) выходит ошибка 2?

/+------------------------------------------------------------------+
//|
//|
//| https://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| template.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "www.metaquotes.net"
//---- импорт функции из внешней DLL
#import "kernel32.dll"
int WinExec(string lpCmdLine,int uCmdShow);
#import
//---- константы открытия\показа (параметр uCmdShow)
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{

//----
WinExec("C:\\AlertMailer.exe",1);


//----
return(0);
}
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Я креветко. Не работает вот почему: вы решили отказаться от стандартных хедеров Windows и неверно указали соглашение вызова.
#include <windows.h>

int WINAPI WinExec(string lpCmdLine,int uCmdShow);

Чему равняется макрос WINAPI — зависит от компилятора.

Что писать в CreateProcess, если что…
#include <windows.h>   // убирай этот kernel32.dll

STARTUPINFO si;
PROCESSINFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.wShowWindow = SW_SHOWDEFAULT;

CreateProcess(NULL, L"c:\\AlertMailer.exe", NULL, NULL, false, 0, NULL, NULL, &si, &pi);
// Мы не ждём ничего от программы — шшас закроем.
// Если хотите дождаться — WaitForSingleObject(hProcess, INFINITY);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
maaGames
@maaGames
Погроммирую программы
Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
Ответ написан
@vilgeforce
Раздолбай и программист
Потому что ERROR_FILE_NOT_FOUND - 2 (0x2) - The system cannot find the file specified.
Ответ написан
Комментировать
@fufaf Автор вопроса
это понятно, но он там есть, больше причин быть не может?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы