· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Недокументированные функции User32.dll

Посл.отвђт Сообщен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