Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ShellExecuteExW  (Прочитано 11617 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mfcer__
Команда клуба

ru
Offline 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__
Команда клуба

ru
Offline Offline

« Ответ #2 : 15-11-2003 12:44 » 

Все скачал, программа запускает консольное приложение, и вроде все нормально!
Но это все "вроде"  Жаль  Возникает следующая проблема:

ConvertAnsiToWide(str1,">res.txt",MAX_PATH);
SHExecInfo.lpParameters = str1;

То есть парметры, которые я указываю здесь не воспринимаются под Win98.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #3 : 15-11-2003 12:46 » 

Mfcer__, что пишет? Как мотивирует?  Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #4 : 15-11-2003 16:50 » 

Цитата

Mfcer__, что пишет? Как мотивирует?

Вы бы лучше помогли запустить Dos программу с параметрами с помощью ShellExecuteExW.   Так больше нельзя...   :?:
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline 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 не проводит предварительного разбора параметров и не перенаправляет потоки
Записан
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #11 : 16-11-2003 10:33 » 

Я тоже обошел в своей программе это с помощью bat файла, но все таки осталось непонятно почему в WinNT/2k/XP параметры воспроинимаются и обрабатываются, а под Win98 нет.
Спасибо за ответы.
Записан
Serega
Гость
« Ответ #12 : 16-11-2003 12:31 » 

У меня XP
Записан
Джон
просто
Администратор

de
Offline 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();
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines