|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 11, 2004 00:07:50 Недокументированные функции User32.dll Возможно, кто-то из вас знает, что User32.dll содержит несколько недокументированных функций (а может и плохо документированных, ;o) таких как: вызав MessagBox'a "Новые параметры всупят в силу только после перезагрузки компьютера. Произвести её сейчас?", вызов диалога "Run" (Выполнить) и др. Так вот сам вопрос. Как вызвать эти функции на ассемблере. Попытка сделать прототип - неудачна, так же как и конвертация user32.dll в user32.lib и подмена её вместо поставляемой с MASM - ничего не дала. Например это на Visual Basice это работает: Private Declare Function SHRestartSystem Lib "shell32" _ Alias "#59" (ByVal hOwner As Long, ByVal sPrompt As String, _ ByVal uFlags As Long) As Long Private Const Restart_Logoff=&H0 Private Const Restart_ShutDown=&H1 Private Const Restart_Reboot=&H2 Private Const Restart_Force=&H4 Private Sub Command1_Click() Prompt = "Моя программа" & VbCrLf А = SHRestartSystem (Me.hwnd, Prompt, Restart_Reboot) End Sub |
|
|
Дата: Авг 11, 2004 00:18:53 Мда... Задает вопрос о user32.dll, а сам приводит пример с shell32.dll... Впечатляет. А так, касательно лично твоей SHRestartSystem. Функции с таким именем внутри shell32.dll нет. Она экспортируется по ординалу. Для вызова такой функции тебе нужно будет использовать LoadLibrary/GetProcAddress и макрос MAKEINTRESOURCE. Поищи в гугле. |
|
|
Дата: Авг 11, 2004 00:36:02 · Поправил: _Sysman_ Везде Shell32.dll Это я от того, что долго не спал... по Google бродил в поисках SHRestartSystem - везде примеры на VB. |
|
|
Дата: Авг 11, 2004 05:13:28 _Sysman_ .386
.model flat, stdcall
option casemap :none
include kernel32.inc
includelib kernel32.lib
EWX_LOGOFF = 0
EWX_SHUTDOWN = 1
EWX_REBOOT = 2
EWX_FORCE = 4
EWX_POWEROFF = 8
.const
wszPrompt dw ':', '-', ')', ' ', 13, 0
szShell32Dll db 'shell32.dll', 0
.code
even
_start:
push offset szShell32Dll
call LoadLibraryA
test eax,eax
jz short @@2
push eax
push 59
push eax
call GetProcAddress
test eax,eax
jz short @@1
push EWX_LOGOFF
push offset wszPrompt
push 0
call eax
@@1:
call FreeLibrary
@@2:
push 0
call ExitProcess
end _start |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051 |