Подскажите, в чем ошибка в использовании WINAPI функции ShellExecute - страница 2

 
Meat:

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

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

string nullstr;

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


Не работает к сожалению
 
chief1973:

Не работает к сожалению

https://www.mql4.com/ru/search#!keyword=shellexecutea
 

Да, понял, спасибо - только у меня другой теперь вопрос - переменные среды в пути к файлу можно указывать или нет?

А то с ShellExecuteA и переменной средой windir в пути не пускает

 
chief1973:

Да, понял, спасибо - только у меня другой теперь вопрос - переменные среды в пути к файлу можно указывать?

зачем?
 

Просто интересно - можно или нет использовать переменные среды?


А как запустить картинку jpg? Через WinExec и через ShellExecute не получается...


CHAR Path [MAX_PATH];
ExpandEnvironmentStrings("%USERPROFILE%\\Images\\`\\image.jpg", Path, MAX_PATH);

ShellExecute(NULL, "open", Path, NULL, NULL, 1);

В С++ такой код использую для открытия картинки - а как это сделать в mql4?

 
chief1973:

Просто интересно - можно или нет использовать переменные среды?

просто так ничего не бывает :) о_О


В С++ такой код использую для открытия картинки - а как это сделать в mql4?

а при чем тут mql4 ?

это WinApi. Вы наверно не на том форуме ищите.

на MSDN вам надо.

 

Подскажите!

Почему мне выдает ошибку при выполнении команды ShellExecuteA, номер которой 2.

Я написал следующее:

#import "C:\WINDOWS\system32\shell32.dll"

int ShellExecuteA(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);

#import

....

string NullStr = "NULL";

Print(ShellExecuteA(NULL,0,"C:\\Program Files\\GetRight\\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O",NullStr,NullStr,5));

Может я что-то не так написал?

Ту же строку C:\Program Files\GetRight\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O выполняю в TotaCommander.

Файл переписывается из сайта.

 
lnlsoftware:

Подскажите!

Почему мне выдает ошибку при выполнении команды ShellExecuteA, номер которой 2.

Я написал следующее:

#import "C:\WINDOWS\system32\shell32.dll"

int ShellExecuteA(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);

#import


Такая же ситуация. Год назад эксперт работал и команды ShellExecuteA выполнялись без проблем, а сейчас выполняться перестало, хотя никаких изменений в эксперт не вносил. Кто знает в чём проблема - помогите!

 
lnlsoftware:

Подскажите!

Почему мне выдает ошибку при выполнении команды ShellExecuteA, номер которой 2.

Я написал следующее:

#import "C:\WINDOWS\system32\shell32.dll"

int ShellExecuteA(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);

#import

....

string NullStr = "NULL";

Print(ShellExecuteA(NULL,0,"C:\\Program Files\\GetRight\\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O",NullStr,NullStr,5));

Может я что-то не так написал?

Ту же строку C:\Program Files\GetRight\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O выполняю в TotaCommander.

Файл переписывается из сайта.

#import "C:\WINDOWS\system32\shell32.dll"
 int ShellExecuteW(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);
#import

string NullStr = "NULL";
Print(ShellExecuteW(NULL,0,"C:\\Program Files\\GetRight\\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O",NullStr,NullStr,5));
 
Zhunko:

#import "C:\WINDOWS\system32\shell32.dll"
 int ShellExecuteW(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);
#import

string NullStr = "NULL";
Print(ShellExecuteW(NULL,0,"C:\\Program Files\\GetRight\\GetRight.exe /URL: http://www.dailyfx.com/files/Calendar-03-09-2014.csv /FILE:Calendar.csv /W /O",NullStr,NullStr,5));

В указанном примере ничего не изменилось. Всё также выдаётся ошибка 2. Почему-то вместо ShellExecuteA теперь пишется ShellExecuteW . Это что изменён синтаксис? Если да то непонятно зачем. В итоге всё-равно пока-что ничего не работает. Не удаётся с помощью ShellExecuteW ни копировать файлы, ни запускать программы. Возвращает результат 2.

#import "C:\WINDOWS\system32\shell32.dll"

 int ShellExecuteW(int hWnd,int lpVerb, string lpFile,int lpParameters,int lpDirectory,int nCmdShow);

#import

 

int cp=-1; 

string NullStr = "NULL"; 

cp = ShellExecuteW(NULL,"Open","D:\webshare\WWWROOT\metatrader\main\Delet.exe",NullStr,NullStr,5);

Alert("cp=",cp);