Mfcer__
Команда клуба
Offline
|
|
« : 08-11-2003 11:35 » |
|
Добрый день! Мне нужносделать чтобы этот код работал под Win98, а как это сделать я ума не приложу. Спасибо заранее. SHELLEXECUTEINFOW SHExecInfo; ZeroMemory(&SHExecInfo, sizeof(SHExecInfo)); WCHAR str[MAX_PATH],str1[MAX_PATH]; ConvertAnsiToWide(str,szPathProgramm,MAX_PATH); MessageBoxW(0,str,0,0); SHExecInfo.cbSize = sizeof(SHExecInfo); SHExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; SHExecInfo.nShow = SW_SHOWNORMAL; SHExecInfo.lpFile = str; ConvertAnsiToWide(str1,">res.txt",MAX_PATH); MessageBoxW(0,str1,0,0); SHExecInfo.lpParameters = str1;
// Здесь все время выпадает ошибка под Win98 if(!ShellExecuteExW(&SHExecInfo)) { MessageBox(0L,"Ошибка открытия Вашей ограммы",0,MB_OK); return; }
|
|
« Последнее редактирование: 20-11-2007 19:06 от Алексей1153++ »
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #1 : 08-11-2003 19:33 » |
|
Windows 95/98/Me: ShellExecuteEx is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems. Microsoft Layer for Unicode on Windows 95/98/Me Systems The Microsoft® Layer for Unicode (MSLU) provides a complete set of Unicode APIs on Microsoft Windows® 95, Windows 98, and Windows Millennium Edition (Windows Me). With this, Unicode applications can run on Microsoft Windows NT®, Windows 2000, Windows XP, and Windows 95/98/Me. You can download MSLU from the following location: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm.
|
|
|
Записан
|
|
|
|
Mfcer__
Команда клуба
Offline
|
|
« Ответ #2 : 15-11-2003 12:44 » |
|
Все скачал, программа запускает консольное приложение, и вроде все нормально! Но это все "вроде" Возникает следующая проблема: ConvertAnsiToWide(str1,">res.txt",MAX_PATH); SHExecInfo.lpParameters = str1; То есть парметры, которые я указываю здесь не воспринимаются под Win98.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #3 : 15-11-2003 12:46 » |
|
Mfcer__, что пишет? Как мотивирует?
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Mfcer__
Команда клуба
Offline
|
|
« Ответ #4 : 15-11-2003 16:50 » |
|
Mfcer__, что пишет? Как мотивирует?
Вы бы лучше помогли запустить Dos программу с параметрами с помощью ShellExecuteExW. :?:
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #5 : 15-11-2003 22:35 » |
|
Mfcer__, дык я и помогаю, для начала ответь на вопрос.. Твоя фраза То есть парметры, которые я указываю здесь не воспринимаются под Win98.
абсолютно не информативна, в плане поиска причин.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Serega
Гость
|
|
« Ответ #6 : 16-11-2003 08:17 » |
|
The SEE_MASK_FLAG_DDEWAIT flag must be specified if the thread calling ShellExecuteEx does not have a message loop or if the thread or process will terminate soon after ShellExecuteEx returns. Under such conditions, the calling thread will not be available to complete the DDE conversation, so it is important that ShellExecuteEx complete the conversation before returning control to the caller. Failure to complete the conversation can result in an unsuccessful launch of the document.
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #7 : 16-11-2003 08:19 » |
|
Напиши побольше о проекте, а то действительно не понятно в каком направлении искать
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #8 : 16-11-2003 08:59 » |
|
void ErrorToMsgBox() { LPTSTR buffer = NULL; if( FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, 0, NULL ) ) { MessageBox( NULL, buffer, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree( buffer ); } }
int _tmain(int argc, _TCHAR* argv[]) { SHELLEXECUTEINFOW SHExecInfo; ZeroMemory(&SHExecInfo, sizeof(SHExecInfo)); SHExecInfo.cbSize = sizeof(SHExecInfo); SHExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; SHExecInfo.nShow = SW_SHOWNORMAL; SHExecInfo.lpFile = L"d:\\test.exe }; SHExecInfo.lpParameters = L" d:\\test.htm > d:\\test.txt";
if( !ShellExecuteExW(&SHExecInfo) ) { ErrorToMsgBox(); }
return 0; }
|
|
« Последнее редактирование: 20-11-2007 19:08 от Алексей1153++ »
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #9 : 16-11-2003 09:02 » |
|
test.exe просто выводит содержимое файла в стандартный выходной поток Программа вызывается и работает, НО вывод не перенапрявляется в test.txt хотя из командной строки все работает буду разбираться
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #10 : 16-11-2003 09:11 » |
|
получилось с помощью батника видимо ShellExecuteEx не проводит предварительного разбора параметров и не перенаправляет потоки
|
|
|
Записан
|
|
|
|
|
Serega
Гость
|
|
« Ответ #12 : 16-11-2003 12:31 » |
|
У меня XP
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #13 : 17-11-2003 08:44 » |
|
Наверное потому,что это не UNICODE платформа?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
SOS
Гость
|
|
« Ответ #14 : 19-11-2003 16:03 » |
|
Myzikiiiiii !!!!!!!!!!!!
Da ShellExecuteEx nikogda ne primet kak parametr >ttt.txt i ne mozet perenapravit' output.
Esly eto DOS app, to poprobyj starij i nadeznij System();
|
|
|
Записан
|
|
|
|
|