Exe для запуска приложения

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

06 июл 2006, 16:18

А у меня в MSVC++ 6.0 без явного подключения Shellapi.h не компилируется. И даже знаю, почему :) - в stdafx.h определен макрос WIN32_LEAN_AND_MEAN, который режет все лишнее (в смысле, редко используемое) из windows.h
Хотя Shell32.lib, действительно, включен в список библиотек по умолчанию.
P1ece
Сообщения: 33
Зарегистрирован: 04 мар 2006, 05:35

06 июл 2006, 22:41

стдафх на всяк случай подрубил... скомпилировал... все ок.

флеха не хочет его стартовать по прежнему :(
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

07 июл 2006, 10:03

Eugie писал(а):А у меня в MSVC++ 6.0 без явного подключения Shellapi.h не компилируется. И даже знаю, почему :) - в stdafx.h определен макрос WIN32_LEAN_AND_MEAN, который режет все лишнее (в смысле, редко используемое) из windows.h
"stdafx.h" у меня как раз не подцеплен. А что, у тебя MFC-приложение? :) Насколько я понимаю, при создании MFC-приложения визард генерит и цепляет "stdafx.h".
Еще раз: ВЕСЬ ("от и до") исходный текст я приводил выше :) Там есть #include <windows.h>, но нет ни "stdafx.h", ни "Shellapi.h".
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

07 июл 2006, 10:08

P1ece писал(а):стдафх на всяк случай подрубил... скомпилировал... все ок.
флеха не хочет его стартовать по прежнему :(
В конце концов, ShellExecute - функция, т.е. возвращает результат.
Проанализируй возвращаемое значение, это может помочь понять, в чем у тебя проблема.

ShellExecute
.....................
Return Values
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Microsoft® Windows® applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an integer and compare it with the value 32 or one of the error codes below:
0 - The operating system is out of memory or resources.
ERROR_FILE_NOT_FOUND - The specified file was not found.
ERROR_PATH_NOT_FOUND - The specified path was not found.
ERROR_BAD_FORMAT - The .exe file is invalid (non-Win32® .exe or error in .exe image).
SE_ERR_ACCESSDENIED - The operating system denied access to the specified file.
SE_ERR_ASSOCINCOMPLETE - The file name association is incomplete or invalid.
SE_ERR_DDEBUSY - The DDE transaction could not be completed because other DDE transactions were being processed.
SE_ERR_DDEFAIL - The DDE transaction failed.
SE_ERR_DDETIMEOUT - The DDE transaction could not be completed because the request timed out.
SE_ERR_DLLNOTFOUND - The specified dynamic-link library was not found.
SE_ERR_FNF - The specified file was not found.
SE_ERR_NOASSOC - There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable.
SE_ERR_OOM - There was not enough memory to complete the operation.
SE_ERR_PNF - The specified path was not found.
SE_ERR_SHARE - A sharing violation occurred.
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

07 июл 2006, 10:48

Сейчас он спросит, как ему проанализировать значение - ошибки то не в строчном виде возвращаются.
2B OR NOT(2B) = FF
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

07 июл 2006, 15:30

BBB, stdafx.h и stdafx.cpp к MFC отношения не имеют. Они нужны, если задана опция Use precompiled headers (студия задает ее по умолчанию для генерируемых мастером проектов).
P1ece, действительно, проверь под отладчиком, что возвращает ShellExecute(). Это на самом деле целое число, в случае ошибки <= 32. Потом найди файл Shellapi.h и посмотри описание ошибки. См.также http://msdn.microsoft.com/library/defau ... xecute.asp
P1ece
Сообщения: 33
Зарегистрирован: 04 мар 2006, 05:35

07 июл 2006, 23:01

оно все прекрасно компилируется и даже работает... проблема в том что с флехи exe то не стартует... как ни странно с СДРОМ все ок... видать я что то отрубил в настройках эксплорера
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

10 июл 2006, 13:07

оно все прекрасно компилируется и даже работает... проблема в том что с флехи exe то не стартует... как ни странно с СДРОМ все ок... видать я что то отрубил в настройках эксплорера
Ты про autorun?
Он по моему зависит от NoDriveTypeAutorun

Код: Выделить всё

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDriveTypeAutoRun"=dword:00000091
Это флаговое слово - для каждого типа дисков там отдельный бит. На win9x я обычно отрубал авторан для всех дисков - записывал туда 0.
Сейчас не отрубаю - стало либо лениво либо Сидиромы стали быстрые либо чего-то с этой настройкой не так - не помню уже.
2B OR NOT(2B) = FF
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

10 июл 2006, 15:34

Absurd писал(а):
оно все прекрасно компилируется и даже работает... проблема в том что с флехи exe то не стартует... как ни странно с СДРОМ все ок... видать я что то отрубил в настройках эксплорера
Ты про autorun?
Он по моему зависит от NoDriveTypeAutorun
.........
Это флаговое слово - для каждого типа дисков там отдельный бит. На win9x я обычно отрубал авторан для всех дисков - записывал туда 0.
Сейчас не отрубаю - стало либо лениво либо Сидиромы стали быстрые либо чего-то с этой настройкой не так - не помню уже.
Я помню, что в Win98 (может, это и не свойство Win98, но наблюдал на этой операционке) у меня autorun запускался даже, когда я делал subst подкаталога.
Т.е., например, в каталоке C:\MYDIR лежит файл autorun.inf
И я выполняю, например:
subst E: C:\MYDIR
Так вот тот самый C:\MYDIR\autorun.inf при этом выполнялся.

А вот сейчас на Win2k (на другом компе) попробовал - фиг, не запускается.

Повторюсь: может, это зависит и не от Win98 или Win2k, а от каких-то там настроек, но я просто факты рассказал.
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

11 июл 2006, 16:18

Если проблема действительно связана с AutoRun, то см. http://msdn.microsoft.com/library/defau ... ay_reg.asp

Дык, все же какое значение возвращает ShellExecute(), когда пытаешься запускать с флешки?
Ответить