Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай MetaTrader 5 и начни торговать уже сегодня!
chief1973
260
chief1973 2012.08.25 18:10 

Здравствуйте. Использую следующий код (для теста):

#import "kernel32.dll"

#import "Shell32.dll"

int ShellExecute(string hwnd, string lpszOp, string lpszFile, string lpszParams, string lpszDir, int fsShowCmd);
int init()
{
ShellExecute(NULL, "open", "%windir%\system32\cmd.exe", NULL, NULL, 1);
return(0);

}

Командная строка не открывается...

Что не правильно?

Комбинатор
15891
Комбинатор 2012.08.25 18:16  

ShellExecute(NULL, "open", "cmd.exe", NULL, NULL, 1);

А так?

chief1973
260
chief1973 2012.08.25 18:41  

Не - мне нужно, чтобы можно было запускать программу из указанного пути

Можно ли так сделать: %windir%\system32\cmd.exe /c winrar.exe - т.е. чтобы можно было из-под командной строки запускать файл и это все в mql4?

chief1973
260
chief1973 2012.08.25 18:45  
TheXpert:

ShellExecute(NULL, "open", "cmd.exe", NULL, NULL, 1);

А так?



Так у меня тоже не заработало...
Комбинатор
15891
Комбинатор 2012.08.25 19:13  
Тогда надо таки нормальный путь подставлять. Правда непонятно зачем вообще использовать cmd...
Alexey Navoykov
3988
Alexey Navoykov 2012.08.25 19:46  

Почему hwnd задан с типом string, если должен быть int? Видимо поэтому и не работает.

Кроме того, для строк нужно указывать не NULL, а неинициализированную строковую переменную. Т.е. вот так:

string nullstr;

ShellExecute(NULL, "open", "%windir%\system32\cmd.exe", nullstr, nullstr, 1);

Андрей
1890
Андрей 2012.08.25 21:09  
ShellExecute? А что такое бывает? Может ShellExecuteA? Что пишет лог?

А вообще... мокловцы традиционно изменили семантику основ
(но не со зла, наверно)- так что системную ошибку GetLastError()
вы не достанете по определению- а то бы и это пригодилось.
Vadim Zhunko
5226
Vadim Zhunko 2012.08.26 01:32  
jartmailru:
ShellExecute? А что такое бывает? Может ShellExecuteA? Что пишет лог?

А вообще... мокловцы традиционно изменили семантику основ
(но не со зла, наверно)- так что системную ошибку GetLastError()
вы не достанете по определению- а то бы и это пригодилось.

Можно вот этим:

RtlGetLastWin32Error();
o_o
Модератор
23690
o_o 2012.08.26 03:36  
jartmailru:

А вообще... мокловцы традиционно изменили семантику основ
(но не со зла, наверно)- так что системную ошибку GetLastError()
вы не достанете по определению- а то бы и это пригодилось.

или добавить int вот так

int GetLastError(int );

chief1973
260
chief1973 2012.08.26 03:42  

А библиотек я те подключаю? kernel32.dll, Shell32.dll - больше ничего не нужно?


cmd - это просто для теста и проверки работы поиска приложений через переменные среды %windir% и другие

o_o
Модератор
23690
o_o 2012.08.26 03:44  
chief1973:

А библиотек я те подключаю? kernel32.dll, Shell32.dll - больше ничего не нужно?

https://www.mql4.com/ru/search#!keyword=shellexecutea
/ /123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий