Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как просматривать ресурсы при помощи AutoIt

Ответить
Настройки темы
[решено] Как просматривать ресурсы при помощи AutoIt

Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Pavluha
Дата: 17-08-2010
Описание: Для уточнения.
Скажите, пожалуйста, можно ли просматривать нестандартные ресурсы типа "RCDATA" или другие нестандартные при помощи AutoIt. Если да, напишите скрипт. Заранее спасибо.

Отправлено: 14:03, 17-07-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pavluha:
вы не правильно поняли »
Это вы неправильно описали свою проблему, нужно уточнять такие подробности при созданий темы.

Цитата Pavluha:
Мне бы функцию вида »
http://www.autoitscript.com/forum/in...howtopic=51103

P.S
beve дал вам ссылку кажется на эту же библиотеку, стоит на неё взглянуть.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:52, 08-08-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Creat0R, я заглянул на указанную вам ссылку, но не разобрался. Не работает. Дайте пример.

Отправлено: 15:37, 14-08-2010 | #12


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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
но у меня не получается её использовать, возможно я не тее параметры ввожу.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:38, 14-08-2010 | #13


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Creat0R, так у меня тоже не получается. Не понимаю, где тут путь к файлу указывать надо?

Отправлено: 17:02, 14-08-2010 | #14


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pavluha:
где тут путь к файлу указывать надо? »
В «$sModule».

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:20, 14-08-2010 | #15


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


_ResourceGetAsRaw() нужно использовать только для нестандартных ресурсов, в том числе и для RCDATA. Для строк, иконок, меню и т.д. есть свои собственные функции, которые и нужно использовать. Универсальной функции нет. Например, для получения строки есть _WinAPI_LoadString(), для иконок - _WinAPI_ExtractIcon(), для VersionInfo - _WinAPI_VerQueryValue(), которая реализована в WinAPIEx.au3 или родной FileGetVersion() и.т.д.

Отправлено: 19:38, 14-08-2010 | #16


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата Yashied:
_ResourceGetAsRaw() нужно использовать только для нестандартных ресурсов »
Вот как раз мне и нужна эта функция, но почему-то вместо текста я получаю код ошибки 3. Может что-то неправильно ввожу.

Отправлено: 14:53, 17-08-2010 | #17


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Цитата Pavluha:
Скажите, пожалуйста, можно ли просматривать ресурсы типа "string"...»
Цитата Pavluha:
Цитата Yashied:
_ResourceGetAsRaw() нужно использовать только для нестандартных ресурсов...[/post]
Вот как раз мне и нужна эта функция »
Как все это нужно понимать?

Отправлено: 15:33, 17-08-2010 | #18


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Yashied, я при написании темы не знал, что нет универсальной функции для просмотра любых ресурсов. Я просто дал пример. Тему исправил.

Отправлено: 18:26, 17-08-2010 | #19


Аватара для Pavluha

Старожил


Сообщения: 165
Благодарности: 7

Профиль | Отправить PM | Цитировать


Creat0R, для чего $iMode, $iSize в вашем приведённом скрипте.

Последний раз редактировалось Pavluha, 30-08-2010 в 12:54.


Отправлено: 12:08, 22-08-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как просматривать ресурсы при помощи AutoIt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Полезные ресурсы по 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




 
Переход