Newsgroup: it.comp.lang.visual-basic
Titolo: [API] Per HYPERION

Erroraccio mio!!!!(ma quanta gente sto fuorviando?!) Si trattava di API-Guide:
"Riavviare il computer per rendere effettive le nuove impostazioni"
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Const EWX_POWEROFF = 8
Private Declare Function SHRestartSystemMB Lib "shell32" Alias "#59" (ByVal
hOwner As Long, ByVal sExtraPrompt As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
    SHRestartSystemMB Me.hwnd, vbNullString, EWX_FORCE
End Sub
"Esegui":
'If uFlags is the following constant, the string from the last-run program will
not appear in the dialogs combo box
Const shrdNoMRUString = &H2    '2nd bit is set
Private Declare Function SHRunDialog Lib "shell32" Alias "#61" (ByVal hOwner As
Long, ByVal Unknown1 As Long, ByVal Unknown2 As Long, ByVal szTitle As String,
ByVal szPrompt As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
    SHRunDialog Me.hwnd, 0, 0, "Start a program ...", "Type the name of a
program ...", 0
End Sub
"Chiudi sessione":
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal
YourGuess As Long) As Long
Private Sub Form_Load()
    SHShutDownDialog 0
End Sub
"Il percorso è un file eseguibile? (se sì, restituisce non-zero - non controlla
se il file esiste sul serio, però)":
Private Declare Function SHPathIsExe Lib "shell32" Alias "#43" (ByVal szPath As
String) As Long
Private Sub Form_Load()
    MsgBox "Is path EXEC?" + Str$(SHPathIsExe("c:\autoexec.bat"))
End Sub
"Il file esiste? (se sì, restituisce non-zero)":
Private Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As
String) As Long
Private Sub Form_Load()
    MsgBox "Does the file exist?" + Str$(SHFileExists("c:\autoexec.bat"))
End Sub
"Formatta unità":
Const SHFD_CAPACITY_DEFAULT = 0 ' default drive capacity
Const SHFD_CAPACITY_360 = 3 ' 360KB, applies to 5.25" drives only
Const SHFD_CAPACITY_720 = 5 ' 720KB, applies to 3.5" drives only
Const SHFD_FORMAT_QUICK = 0 ' quick format
Const SHFD_FORMAT_FULL = 1 ' full format
Const SHFD_FORMAT_SYSONLY = 2 ' copies system files only (Win95 Only!)
Private Declare Function SHFormatDrive Lib "shell32" (ByVal hwndOwner As Long,
ByVal iDrive As Long, ByVal iCapacity As Long, ByVal iFormatType As Long) As
Long
Private Sub Form_Load()
    'iDrive = The drive number to format. Drive A=0, B=1 (if present, otherwise
C=1), and so on.
    SHFormatDrive Me.hwnd, 0, SHFD_CAPACITY_DEFAULT, SHFD_FORMAT_QUICK
End Sub

E, per tutti gli smanettoni (e per i programmatori C/C++ [ma è vero che potete
chiamare le API senza parametri, anzi, fornendo pure una riga di comando? che
culo, come vi invidio...]), qualche API non documentata e non utilizzabile in VB
(usate: Shell "rundll32 nomelibreria, NomeFunzione", e mi raccomando maiuscole e
minuscole):
LIBRERIA: mouse.dll
FUNZIONI:
 - Disable: blocca irreparabilmente il mouse (fino al prossimo riavvio)
LIBRERIA: keyboard.dll
FUNZIONI:
 - Disable: blocca la tastiera, ma CTRL+ALT+CANC va ancora
LIBRERIA: krnl386.exe
FUNZIONI:
(e qui ci divertiamo)
 - EnableOEMLayer: resetta lo schermo, blocca il sistema
 - DisableOEMLayer: blocco irreversibile (spegnimento del computer richiesto)
 - LocalInit: non so che faccia, ma dalle mie parti causa un bel Blue Screen of
Death...
 - ExitKernel/DisableKernel: blocca tutto e spegne il computer
LIBRERIA: shell32.dll
FUNZIONI:
 - SHExitWindowsEx -1: chiude tutti i programmi e riavvia solo la shell
 - SHExitWindowsEx -2: riavvia il sistema
LIBRERIA: user.exe
(nota: per chiamare le funzioni usate RunDLL anzichè RunDLL32)
 - ExitWindows: arresta il sistema
 - ExitWindowsExec: riavvia Windows senza passare dal boot

  - SHExitWindowsEx -2: riavvia il sistema
[CUT]


 wrote in message
news:88pp1t$nu7$2...@bw107zhb.bluewin.ch...


 far venire il mal di testa... tra le altre cose...
probabilmente sono quelle che funzionano davvero e tengono in piedi il
tutto. delle altre mi fido meno.
Forbidden Function bunny800
    bunny800 = iif(subscribe2playboy, true, false)
End Function

...

Function ShareKernel(ByVal hInstance As Long) As Long
    Do
        Call DoNothing() 'simulate complex elaboration
        Call DoEvents() 'Leave the hInstance run for a while
        If (Rnd = 3.141592) Then Call CrashWindows() 'sometimes it could
happen...
    Loop While (True)
End function
Ciao

 far venire il mal di testa... tra le altre cose...
Ma cosa si fumavano i programmatori MS? Ne ho trovata un'altra: Piglet_361...
PORCELLINO_361, dico, ma vi rendete conto???
Eccone un'altra (questa è veramente da ridere...)... YIELD (ARRENDERSI!!! Non
voglio nemmeno sapere a cosa serve!)

Hyperion ha scritto nel messaggio ...

Purtroppo la Yield esiste ed è anche documentata.
Ormai viene usata penso solo in Java per fermare un thread temporaneamente
per lasciare spazio anche ad altri threads (tipo il doEvents).
Per quanto riguarda le Api MSDN riporta questa stupenda frase (nota il
finale):
The Yield function is obsolete. This function is provided only for
compatibility with 16-bit versions of Windows. In the Win32-based
application programming interface (API), this function does nothing.
Ciao.

 application programming interface (API), this function does nothing.
Che si spiega col fatto che, a 16 bit, lanci Windows digitando "Win"
(Vincere!). Evidentemente oggi gli unici che devono arrendersi siamo noi.
--
Ciao.
Maurizio