|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как просматривать ресурсы при помощи AutoIt |
|
[решено] Как просматривать ресурсы при помощи AutoIt
|
Старожил Сообщения: 165 |
Профиль | Отправить PM | Цитировать
Скажите, пожалуйста, можно ли просматривать нестандартные ресурсы типа "RCDATA" или другие нестандартные при помощи AutoIt. Если да, напишите скрипт. Заранее спасибо.
|
|
Отправлено: 14:03, 17-07-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
Цитата Pavluha:
P.S beve дал вам ссылку кажется на эту же библиотеку, стоит на неё взглянуть. |
||
------- Отправлено: 18:52, 08-08-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, я заглянул на указанную вам ссылку, но не разобрался. Не работает. Дайте пример.
|
Отправлено: 15:37, 14-08-2010 | #12 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
Func _ResourceGetAsRaw($iResType, $iResName, $iResLang, $sModule, $iMode = 0, $iSize = 0) Local $iLoaded Local $a_hCall = DllCall("kernel32.dll", "hwnd", "GetModuleHandleW", "wstr", $sModule) If @error Then Return SetError(1, 0, "") EndIf If Not $a_hCall[0] Then $a_hCall = DllCall("kernel32.dll", "hwnd", "LoadLibraryExW", "wstr", $sModule, "hwnd", 0, "int", 34) If @error Or Not $a_hCall[0] Then Return SetError(2, 0, "") EndIf $iLoaded = 1 EndIf Local $hModule = $a_hCall[0] Switch IsNumber($iResType) + 2 * IsNumber($iResName) Case 0 $a_hCall = DllCall("kernel32.dll", "hwnd", "FindResourceExW", _ "hwnd", $hModule, _ "wstr", $iResType, _ "wstr", $iResName, _ "int", $iResLang) Case 1 $a_hCall = DllCall("kernel32.dll", "hwnd", "FindResourceExW", _ "hwnd", $hModule, _ "int", $iResType, _ "wstr", $iResName, _ "int", $iResLang) Case 2 $a_hCall = DllCall("kernel32.dll", "hwnd", "FindResourceExW", _ "hwnd", $hModule, _ "wstr", $iResType, _ "int", $iResName, _ "int", $iResLang) Case 3 $a_hCall = DllCall("kernel32.dll", "hwnd", "FindResourceExW", _ "hwnd", $hModule, _ "int", $iResType, _ "int", $iResName, _ "int", $iResLang) EndSwitch If @error Or Not $a_hCall[0] Then If $iLoaded Then Local $a_iCall = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $hModule) If @error Or Not $a_iCall[0] Then Return SetError(7, 0, "") EndIf EndIf Return SetError(3, 0, "") EndIf Local $hResource = $a_hCall[0] Local $a_iCall = DllCall("kernel32.dll", "int", "SizeofResource", "hwnd", $hModule, "hwnd", $hResource) If @error Or Not $a_iCall[0] Then If $iLoaded Then Local $a_iCall = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $hModule) If @error Or Not $a_iCall[0] Then Return SetError(7, 0, "") EndIf EndIf Return SetError(4, 0, "") EndIf Local $iSizeOfResource = $a_iCall[0] $a_hCall = DllCall("kernel32.dll", "hwnd", "LoadResource", "hwnd", $hModule, "hwnd", $hResource) If @error Or Not $a_hCall[0] Then If $iLoaded Then Local $a_iCall = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $hModule) If @error Or Not $a_iCall[0] Then Return SetError(7, 0, "") EndIf EndIf Return SetError(5, 0, "") EndIf Local $a_pCall = DllCall("kernel32.dll", "ptr", "LockResource", "hwnd", $a_hCall[0]) If @error Or Not $a_pCall[0] Then If $iLoaded Then Local $a_iCall = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $hModule) If @error Or Not $a_iCall[0] Then Return SetError(7, 0, "") EndIf EndIf Return SetError(6, 0, "") EndIf Local $tOut Switch $iMode Case 0 $tOut = DllStructCreate("char[" & $iSizeOfResource + 1 & "]", $a_pCall[0]) Case 1 $tOut = DllStructCreate("byte[" & $iSizeOfResource & "]", $a_pCall[0]) EndSwitch Local $sReturnData = DllStructGetData($tOut, 1) If $iLoaded Then Local $a_iCall = DllCall("kernel32.dll", "int", "FreeLibrary", "hwnd", $hModule) If @error Or Not $a_iCall[0] Then Return SetError(7, 0, "") EndIf EndIf Switch $iSize Case 0 Return SetError(0, 0, $sReturnData) Case Else Switch $iMode Case 0 Return SetError(0, 0, StringLeft($sReturnData, $iSize)) Case 1 Return SetError(0, 0, BinaryMid($sReturnData, 1, $iSize)) EndSwitch EndSwitch EndFunc |
|
------- Отправлено: 16:38, 14-08-2010 | #13 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, так у меня тоже не получается. Не понимаю, где тут путь к файлу указывать надо?
|
Отправлено: 17:02, 14-08-2010 | #14 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
|
|
------- Отправлено: 17:20, 14-08-2010 | #15 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать _ResourceGetAsRaw() нужно использовать только для нестандартных ресурсов, в том числе и для RCDATA. Для строк, иконок, меню и т.д. есть свои собственные функции, которые и нужно использовать. Универсальной функции нет. Например, для получения строки есть _WinAPI_LoadString(), для иконок - _WinAPI_ExtractIcon(), для VersionInfo - _WinAPI_VerQueryValue(), которая реализована в WinAPIEx.au3 или родной FileGetVersion() и.т.д.
|
Отправлено: 19:38, 14-08-2010 | #16 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Цитата Yashied:
|
|
Отправлено: 14:53, 17-08-2010 | #17 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:33, 17-08-2010 | #18 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Yashied, я при написании темы не знал, что нет универсальной функции для просмотра любых ресурсов. Я просто дал пример. Тему исправил.
|
Отправлено: 18:26, 17-08-2010 | #19 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, для чего $iMode, $iSize в вашем приведённом скрипте.
|
Последний раз редактировалось Pavluha, 30-08-2010 в 12:54. Отправлено: 12:08, 22-08-2010 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Полезные ресурсы по AutoIt и архивы многостраничных тем | Vadikan | AutoIt | 11 | 25-06-2019 10:25 | |
[решено] Как править ресурсы в файлах с помощью AutoIT | CyberStyLe | AutoIt | 3 | 29-09-2009 08:07 | |
Разное - Autoit как написать услоие авто закрытие скрипта при повторном запуске? | ShadowMas | Программирование и базы данных | 2 | 30-06-2008 20:06 | |
Разное - AutoIt Просьба о помощи! | ShadowMas | Программирование и базы данных | 4 | 16-06-2008 19:14 | |
[решено] Как запустить скрипт (в т. ч. Autoit) при первом входе в систему? | Wu-Tang | Автоматическая установка Windows 2000/XP/2003 | 16 | 14-06-2008 20:39 |
|