Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Taskmanager über mit API de-/aktivieren

Taskmanager über mit API de-/aktivieren
06.09.2005 23:56:21
Harry
Hi, Excel-/VBA-Profis,
um die Zeichenfolge [STRG] + [ALT] + [ENTF] zu aktivieren/deaktivieren stieß ich bei meinen Recherchen in
http://www.activevb.de/tipps/vb6tipps/tipp0097.html
auf folgenden Code:
' In Arbeitsmappe: Tabellenblatt "Tabelle1"
' mit Steuerelement: Schaltfläche "Command1"
' mit Steuerelement: Schaltfläche "Command2"
' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
' Im Klassenmodul: "Tabelle1"
' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Option Explicit
Private Declare Function GetCurrentProcessId Lib _
"kernel32" () As Long
Private Declare Function RegisterServiceProcess Lib _
"kernel32" (ByVal dwProcessID As Long, ByVal _
dwType As Long) As Long

Private Sub Command1_Click()
Dim pId&
pId = GetCurrentProcessId
Call RegisterServiceProcess(pId, 0&)
End Sub


Private Sub Command2_Click()
Dim pId&
pId = GetCurrentProcessId
Call RegisterServiceProcess(pId, 1&)
End Sub

Beim Austesten bekam ich allerdings folgende Fehlermeldung:
Laufzeitfehler 453
DLL-Einsprungpunkt RegisterServiceProcess in kernel32 nicht gefunden
Kann mir jemand verraten, wie dieser Einsprungspunkt heißt?
Bin für jeden heißen Tipp dankbar
Gruss
Harry

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Taskmanager über mit API de-/aktivieren
07.09.2005 00:06:20
Sven
Hi,
hast du dir unter diesem Link angesehen, unter welchen Systemen das funktioniert?
mfg Sven
AW: Taskmanager über mit API de-/aktivieren
07.09.2005 00:14:54
Nepumuk
Hallo Harry,
versuch es mal so:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function SystemParametersInfo Lib "User32" Alias _
    "SystemParametersInfoA" (ByVal uAction As Long, _
    ByVal uParam As Long, ByVal lpvParam As Any, _
    ByVal fuWinIni As Long) As Long

Private Declare Function GetVersionEx Lib "kernel32" Alias _
    "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) _
    As Long

Private Declare Function RegCreateKey Lib "advapi32.dll" _
    Alias "RegCreateKeyA" (ByVal hKey As Long, _
    ByVal lpSubKey As String, ByRef phkResult As Long) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
    Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal _
    lpSubKey As String, ByVal ulOptions As Long, ByVal _
    samDesired As Long, phkResult As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" _
    (ByVal hKey As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32.dll" _
    Alias "RegSetValueExA" (ByVal hKey As Long, ByVal _
    lpValueName As String, ByVal Reserved As Long, ByVal _
    dwType As Long, lpData As Long, ByVal cbData As Long) _
    As Long

Private Declare Function RegSetValueEx_Str Lib "advapi32.dll" _
    Alias "RegSetValueExA" (ByVal hKey As Long, ByVal _
    lpValueName As String, ByVal Reserved As Long, ByVal _
    dwType As Long, ByVal lpData As String, ByVal cbData As _
    Long) As Long

Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

Private Const SPI_SCREENSAVERRUNNING = 97&
Private Const VER_PLATFORM_WIN32s = 0&
Private Const VER_PLATFORM_WIN32_WINDOWS = 1&
Private Const VER_PLATFORM_WIN32_NT = 2&

Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or _
    KEY_SET_VALUE Or _
    KEY_CREATE_SUB_KEY Or _
    KEY_ENUMERATE_SUB_KEYS Or _
    KEY_NOTIFY Or _
    KEY_CREATE_LINK

Private Const ERROR_SUCCESS = 0&
Private Const REG_DWORD = 4
Private Const REG_SZ = 1

Private Enum RegRoot
    HKEY_CLASSES_ROOT = &H80000000
    HKEY_CURRENT_USER = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HKEY_USERS = &H80000003
    HKEY_PERFORMANCE_DATA = &H80000004
    HKEY_CURRENT_CONFIG = &H80000005
    HKEY_DYN_DATA = &H80000006
End Enum

Public Sub prcDeactivateTskMng()
    If (Not IsOS_NT) Then
        SystemParametersInfo SPI_SCREENSAVERRUNNING, True, "1", 0
    Else
        prcWriteField "Software\Microsoft\Windows\CurrentVersion\Policies\System", _
            "DisableTaskMgr", 1
    End If
End Sub

Public Sub prcActivateTskMng()
    If (Not IsOS_NT) Then
        SystemParametersInfo SPI_SCREENSAVERRUNNING, False, "1", 0
    Else
        prcWriteField "Software\Microsoft\Windows\CurrentVersion\Policies\System", _
            "DisableTaskMgr", 0
    End If
End Sub

Private Function IsOS_NT() As Boolean
    Dim OSVersion As OSVERSIONINFO
    OSVersion.dwOSVersionInfoSize = Len(OSVersion)
    Call GetVersionEx(OSVersion)
    With OSVersion
        If .dwPlatformId = VER_PLATFORM_WIN32_NT Then
            IsOS_NT = True
        ElseIf .dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
            IsOS_NT = False
        ElseIf .dwPlatformId = VER_PLATFORM_WIN32s Then
            IsOS_NT = False
        End If
    End With
End Function

Private Sub prcWriteField(KeyName As String, FieldName As String, varValue As Variant, _
        Optional RegistryRoot As RegRoot = HKEY_CURRENT_USER)

    fncRegValueSet RegistryRoot, KeyName, FieldName, varValue
End Sub

Private Function fncRegValueSet(Root As RegRoot, Key As String, Field As String, _
        Value As Variant) As Long

    Dim Result As Long, hKey As Long, strValue As String, lngValue As Long
    Result = RegOpenKeyEx(Root, Key, 0, KEY_ALL_ACCESS, hKey)
    If Result <> ERROR_SUCCESS Then
        RegCreateKey Root, Key, Result
        Result = RegOpenKeyEx(Root, Key, 0, KEY_ALL_ACCESS, hKey)
    End If
    If Result = ERROR_SUCCESS Then
        Select Case VarType(Value)
            Case vbInteger, vbLong
                lngValue = Clng(Value)
                Result = RegSetValueEx(hKey, Field, 0, REG_DWORD, lngValue, 4)
            Case vbString
                strValue = CStr(Value)
                Result = RegSetValueEx_Str(hKey, Field, 0, REG_SZ, _
                    strValue, Len(strValue) + 1)
        End Select
        Result = RegCloseKey(hKey)
    End If
    fncRegValueSet = Result
End Function

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Taskmanager über mit API de-/aktivieren
07.09.2005 00:26:44
Harry
Hi Nepumuk,
danke für den überaus heissen Tipp - werd' ihn gleich austesten! (Freu!)
Gruß
Harry
AW: Taskmanager über mit API de-/aktivieren
07.09.2005 00:19:19
Harry
Hi Sven,
ja - hab ich. Aber wo liegt da das Problem?
(Ich hab auf meinem Rechner Windows2000 installiert. In der Recherche steht, soweit ich das verstanden habe, daß es nur auf NT nicht anwendbar ist.)
Gruss
Harry
AW: Taskmanager über mit API de-/aktivieren
07.09.2005 00:22:57
Nepumuk
Hallo Harry,
Win2000 beruht auf NT.
Gruß
Nepumuk
@Nepumuk
07.09.2005 00:36:17
Harry
Oh - schade!!
Deshalb hat sich auch nach dem Laufenlassen der Prozedur "prcDeactivateTskMng"
der Taskmanager noch immer gerührt...
Gibt' s da noch 'ne andere Variante?
Gruss
Harry
Anzeige
AW: @Nepumuk
07.09.2005 06:46:55
Nepumuk
Hallo Harry,
ich habe Windows2000 und bei mir funktioniert das einwandfrei. Sprich, ich kann ihn nicht mehr aufrufen. Wenn du den Taskmanager offen hast, dann bleibt das Fenster auch offen. Um das zu schließen, brauchst du einen ganz anderen Code.
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: @Nepumuk
08.09.2005 21:39:16
Harry
Hallo Nepumuk,
1.) ...Sorry für die verspätete Antwort - hatte gestern frei und bin erst jetzt wieder online (ist mein Firmen-PC)
2.) ...ich bin auf etwas draufgekommen:
Wenn ich [STRG]+[ALT]+[ENTF] drücke, erscheint auch nicht der Task-Manager,
sondern eine andere Dialogbox mit dem Titel "Windows-Sicherheit" (enthält sog. "Anmeldeinformationen"). Auf dieser Dialogbox befinden sich 6 CommandButtons, mit einem von diesen CB's läßt sich der Task-Manager aufrufen.
Ist es möglich, daß diese Tastaturzeichenfolge durch eine weitere Steuereinheit irgendwie "anders" abgefangen/verarbeitet wird (Mein PC hängt an einem Netzwerk)?
Vielen Dank für Deine bisherigen Bemühungen (hat bisher leider nicht funktioniert)!
Gruss
Harry
P.S.: Frage noch offen
Anzeige
AW: @Nepumuk
08.09.2005 21:45:22
Nepumuk
Hallo Harry,
wenn ich diese Anzeige aufrufe, ist der Button ausgegraut. Wie ist es bei einem Rechtsklick in die Taskleiste, ist dort der Button aktiv?
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: @Nepumuk
08.09.2005 22:15:25
Harry
Hallo Nepumuk,
Bei einem Rechtsklick in die Taskleiste ist der Button dort noch immer aktiv.
Hast Du viell. ne Ahnung, woran DAS liegen könnte?
Gruss
Harry
AW: @Nepumuk
08.09.2005 23:20:14
Nepumuk
Hallo Harry,
das sind die eingeschränkten Rechte auf dem Rechner. Du darfst in der Registry keinen Schlüssel in "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" schreiben.
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: @Nepumuk
10.09.2005 14:29:28
Harry
Hallo Nepumuk,
vielen, vielen, vielen Dank für deine Bemühungen!
Diese Info hilft mir schon gewaltig weiter (wenigstens
weiß ich jetzt, woran das liegt).
Wünsch Dir noch ein angenehmes Wochenende!
Gruss
Harry

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige