@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);
}
  • Вопрос задан
  • 345 просмотров
Решения вопроса 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 Автор вопроса
это понятно, но он там есть, больше причин быть не может?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы