1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Madara

Beiträge von Madara

  • Script kurzzeitig schützen

    • Madara
    • 2. Januar 2014 um 15:21

    Ließt du eigentlich was wir oben geschrieben haben??

  • Autoit - WebcamSnapshotter [Directshow]

    • Madara
    • 2. Januar 2014 um 15:15

    Hallo,

    Ich präsentiere mein ersten Skriptrelease: WebcamSnapshotter.
    Mit WebcamSnapshotter lassen sich im Handumdrehen Webcam-Schnappschüsse erstellen, ohne
    großen Aufwand.
    WebcamSnapshotter listet alle Webcams in einer ComboBox auf, der Benutzer kann die gewünschte
    Webcam selektieren, und ein Schnappschuss wird erstellt.
    Hierbei wird auf eine C-Dll verwendet (http://sol.gfxile.net/escapi/index.html).
    Es werden Directshow APIs verwendet, um professionell mit der Webcam kommunizieren zu können.
    Der Schnappschuss wird in dem Verzeichnis gespeichert, in dem WebcamSnapshotter gestartet wurde.
    Ein Dankeschön an trancexx von autoitscript.com für die Subrogation.au3.

    Features:

    • Schnelle Webcamschnappschüsse erstellen
    • Professionelle Webcamverwendung durch DirectShow API's
    • Keine Zusatzdateien notwending, Dll's werden im Speicher verwendet und nicht extrahiert --> Standalone executable
    • Einfache Auswahl der Webcam per ComboBox
    • Schnappschüsse werden im .jpg Format gespeichert --> Geringe Dateigröße im vgl zu .png Bildern.
    • Keine Probleme mit Video-Source-Popups!

    [Blockierte Grafik: http://s7.directupload.net/images/140102/83mycfpz.gif]

    Version: 1.0
    Author: Madara (aka Madara-Uchiha)
    Credits: trancexx

    Bitte gebt Credits falls ihr mein Programm verwendet.
    Konstruktive Kritik ist erwünscht :)

    An alle die eine kleine DeviceList wollen :D

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $KnownCams = GUICreate("Webcam Device List", 363, 281, 110, 124)
    $ListView1 = GUICtrlCreateListView("Webcam Device Name|Light|Popup", 8, 8, 346, 238)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 202)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 70)
    $ListView1_0 = GUICtrlCreateListViewItem("1.3M WebCam|No|No", $ListView1)
    $ListView1_1 = GUICtrlCreateListViewItem("1.3M HD WebCam|Yes|No", $ListView1)
    $ListView1_2 = GUICtrlCreateListViewItem("Namuga 1.3M Webcam|No|No", $ListView1)
    $ListView1_3 = GUICtrlCreateListViewItem("Rocketfish HD Webcam Lite|Yes|No", $ListView1)
    $ListView1_4 = GUICtrlCreateListViewItem("USB 2.0 Camera|No|Yes", $ListView1)
    $ListView1_5 = GUICtrlCreateListViewItem("USB 2.0 UVC HD Webcam|No|No", $ListView1)
    $ListView1_6 = GUICtrlCreateListViewItem("USB-Videodevice|Unknown|No", $ListView1)
    $ListView1_7 = GUICtrlCreateListViewItem("WebCam SC-0311139N|No|No", $ListView1)
    $ListView1_10 = GUICtrlCreateListViewItem("WebCam SCB-1900N|No|No", $ListView1)
    $ListView1_11 = GUICtrlCreateListViewItem("1.3M Integrated Webcam|Yes|Yes", $ListView1)
    $ListView1_12 = GUICtrlCreateListViewItem("A4 TECH USB2.0 PC Camera|Yes|No", $ListView1)
    $ListView1_13 = GUICtrlCreateListViewItem("Asus built-in Webcams|Yes|No", $ListView1)
    $ListView1_14 = GUICtrlCreateListViewItem("BisonCam, NB Pro|Yes|No", $ListView1)
    $ListView1_15 = GUICtrlCreateListViewItem("Chicony USB 2.0 Camera|Yes|No", $ListView1)
    $ListView1_16 = GUICtrlCreateListViewItem("Compaq Presario CQ60|Yes|No", $ListView1)
    $ListView1_17 = GUICtrlCreateListViewItem("HD WebCam|Yes|No", $ListView1)
    $ListView1_18 = GUICtrlCreateListViewItem("HP Pavilion Webcam|Yes|No", $ListView1)
    $ListView1_19 = GUICtrlCreateListViewItem("Lenovo EasyCamera|Yes|No", $ListView1)
    $ListView1_20 = GUICtrlCreateListViewItem("Logitech C270 HD|Yes|No", $ListView1)
    $ListView1_21 = GUICtrlCreateListViewItem("Logitech C310|Yes|No", $ListView1)
    $ListView1_22 = GUICtrlCreateListViewItem("Logitech C910 HD|Yes|No", $ListView1)
    $ListView1_23 = GUICtrlCreateListViewItem("Logitech c920 HD|Yes|No", $ListView1)
    $ListView1_24 = GUICtrlCreateListViewItem("Logitech QuickCam|Yes|No", $ListView1)
    $ListView1_25 = GUICtrlCreateListViewItem("Microsoft Lifecam|Yes|No", $ListView1)
    $ListView1_26 = GUICtrlCreateListViewItem("Microsoft Lifecam VX-3000|Yes|No", $ListView1)
    $ListView1_27 = GUICtrlCreateListViewItem("PS3 Eye Camera|Yes|No", $ListView1)
    $ListView1_28 = GUICtrlCreateListViewItem("Sony Webcams|Yes|Yes", $ListView1)
    $ListView1_29 = GUICtrlCreateListViewItem("Toshiba Web Camera|Yes|No", $ListView1)
    $ListView1_30 = GUICtrlCreateListViewItem("TrueVision HD|Yes|No", $ListView1)
    $ListView1_31 = GUICtrlCreateListViewItem("USB2.0 UVC 2M|Yes|No", $ListView1)
    $ListView1_32 = GUICtrlCreateListViewItem("CyberLink YouCam|Yes|Yes", $ListView1)
    $ListView1_33 = GUICtrlCreateListViewItem("WC060 Series SWEEX HD|Yes|No", $ListView1)
    $ListView1_34 = GUICtrlCreateListViewItem("Webcam SC-13HDL11939N|Yes|No", $ListView1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Dateien

    WebcamSnapshotter.au3 297,25 kB – 639 Downloads
  • Script kurzzeitig schützen

    • Madara
    • 2. Januar 2014 um 15:09

    Ja. So:

    [autoit]

    #include <Security.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    #RequireAdmin

    [/autoit][autoit][/autoit][autoit]

    ;Debug-Privlegien holen...
    Local $hToken = _Security__OpenProcessToken(_WinAPI_GetCurrentProcess(), $TOKEN_ALL_ACCESS)
    _Security__SetPrivilege($hToken, $SE_DEBUG_NAME, True)
    _WinAPI_CloseHandle($hToken)

    [/autoit][autoit][/autoit][autoit]

    ;Escape-Funktion registrieren
    HotKeySet("{ESC}", "_Escape")

    [/autoit][autoit][/autoit][autoit]

    ;Critical-Flag auf <TRUE> setzen
    _WinAPI_SetProcessIsCritical(True)

    [/autoit][autoit][/autoit][autoit]

    ;Hauptschleife
    While True
    Sleep(20)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _Escape()
    ;Critical-Flag auf <FALSE> setzen
    MsgBox(0, "", _WinAPI_SetProcessIsCritical(False))
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _WinAPI_SetProcessIsCritical($bState)
    $avReturn = DllCall("ntdll.dll", "int:cdecl", "RtlSetProcessIsCritical", "boolean", $bState, "ptr", 'none', "boolean", False)
    Return $avReturn[0]
    EndFunc

    [/autoit]
  • Script kurzzeitig schützen

    • Madara
    • 1. Januar 2014 um 20:39

    chesstiger :

    Das ist aber nur bei der Verwendung der RtlSetProcessIsCritical-API.
    Da versucht wird sogar im Admin-mode den Prozess zu schützen. --> BSOD bei Kill.
    Wenn du die CriticalFlag mit der NtSetInformationProcess-API zuweist gibts nur ne Usermode Protection, also bei einem Nichtadmin kommt bei einem versuchten Prozesskill diese Meldung:

    [Blockierte Grafik: http://s14.directupload.net/images/140101/ohw27fgh.png]


    Bei einem Administrator beendet sich nach einem Prozesskill die Anwendung normal, ohne BSOD.
    Kannste ja mal probieren zu scripten ^^


    Edit:
    Ich habs mal Mit NtSetInformationProcess probiert, aber iwie klappt es nicht, der Prozess kann normal gekillt werden...
    Der DllCall muss falsch sein...? :huh:

    [autoit]

    #include <WinApi.au3>
    #include <Security.au3>
    #RequireAdmin

    [/autoit][autoit][/autoit][autoit]

    ;Get Debug Privileges
    Local $DebugToken = _Security__OpenThreadToken(_WinAPI_GetCurrentProcess(),$TOKEN_ALL_ACCESS)
    _Security__SetPrivilege($DebugToken,$SE_DEBUG_NAME,True)
    _WinAPI_CloseHandle($DebugToken)

    [/autoit][autoit][/autoit][autoit]

    Func _NtSetInformationProcess_ProtectProcess()
    ConsoleWrite('Protecting Process...' & @LF)
    $StateReturn = DllCall("ntdll.dll","int", "NtSetInformationProcess","handle",_WinAPI_OpenProcess(512,False,ProcessExists(@ScriptName)),"int",29,"ptr*",1,"long",4)
    Return $StateReturn
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    _NtSetInformationProcess_ProtectProcess()

    [/autoit][autoit][/autoit][autoit]

    While True

    [/autoit][autoit][/autoit][autoit]

    Sleep(20)

    [/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Script kurzzeitig schützen

    • Madara
    • 1. Januar 2014 um 19:44

    Um ein Prozess-Beenden durch den Taskmanager zu verhindern, müsstest du entweder:

    a) NtTerminateProcess Hooken (Prozess-Status kannste mit ZwQueryProcessInformation in der ProcessBreakOnTerminationClass prüfen.)
    b) Deinem AutoIt process mit dem API Call RtlSetProcessIsCritical eine Critical-Flag zuweißen.
    c) Deinem AutoIt process mit dem API Call NtSetInformationProcess eine Critical-Flag zuweißen.
    d) Andere Native Methoden anwenden, das geht mit AutoIt aber nicht, da wird C/C++/ASM benötigt...

    Viel Erfolg.

  • GetItem ID

    • Madara
    • 30. Dezember 2013 um 14:25

    Hallo,

    Ist es möglich dynamisch die ItemID eines Items in dem SysListView32 zu bekommen, also sprich, per Name.
    Nehmen wir an ich habe ein normales explorer Fenster geöffnet, und möchte die ID des Items HelpPane.exe haben.
    Wie mach ich das am besten?

    [Blockierte Grafik: http://s1.directupload.net/images/131230/dfvjyz7l.png]

  • Installed Software

    • Madara
    • 29. Dezember 2013 um 23:57

    Perfekt, danke :)

  • Installed Software

    • Madara
    • 29. Dezember 2013 um 22:21

    Ok, ich habs nochmal richtig formatiert. :)
    Ist es iwie möglich die gewünschten Einträge als Array zurückzugeben?
    Also Array[1] beeinhaltet eben NameDes1Programms|||HerstellerDes1Programms|||VersionDes1Programms|||UninstallStringDes1Programms~~~
    Und Array[2] beeinhaltet eben NameDes2Programms|||HerstellerDes2Programms|||VersionDes2Programms|||UninstallStringDes2Programms~~~


    usw, usw.
    Wie mach ich das am besten?  :huh:

  • Installed Software

    • Madara
    • 29. Dezember 2013 um 13:13

    Meine function sieht jetzt so aus:

    [autoit]

    ShowInstalledSoftware()

    [/autoit][autoit][/autoit][autoit]

    func ShowInstalledSoftware()
    $AppArray = ''
    Do
    $act_key = RegEnumKey ($key, $count)
    If @error <> 0 then
    $abort += 1
    $count = 1
    $key = $main_key64
    Else
    $count = $count + 1
    $act_name = RegRead($key & '\' & $act_key, "Displayname")
    $act_name = StringReplace ($act_name, " (remove only)", "")
    if stringinstr($act_name,"Security Update") then continueloop
    if stringinstr($act_name,"Update for Microsoft") then continueloop
    if stringinstr($act_name,"Hotfix for") then continueloop
    if stringinstr($act_name,"Service Pack") then continueloop
    If $act_name <> "" And Not StringInStr($all_keys,"|" & $act_name & "|") Then
    $dontShow = RegRead($key & '\' & $act_key, "SystemComponent")
    If not $dontShow then
    $Publisher = RegRead($key & '\' & $act_key, "Publisher")
    $Version = RegRead($key & '\' & $act_key, "DisplayVersion")
    $UninstallString = RegRead($key & '\' & $act_key, "UninstallString")

    [/autoit][autoit][/autoit][autoit]

    If $Publisher = '' Then
    $Publisher = 'Unknown Publisher'
    EndIf
    If $Version = '' Then
    $Version = 'Unknown Version'
    EndIf
    If $UninstallString = '' Then
    $UninstallString = 'No Uninstaller found'
    EndIf
    ConsoleWrite($act_name & ' ||| ' & $Publisher & ' ||| ' & $Version & ' ||| ' & $UninstallString & '~~~' & @CRLF)
    Endif
    If $dontShow = 1 Then ContinueLoop
    $all_keys = $all_keys & $act_name & "|"
    $foundItems += 1
    EndIf
    EndIf
    Until $abort = 2
    ConsoleWrite ("Einträge: " & $foundItems & @CRLF)
    EndFunc

    [/autoit]

    Ich versuche gerade das ganze als array zurückzugeben, kriegs aber nicht wirklich hin...

  • Installed Software

    • Madara
    • 28. Dezember 2013 um 22:37

    Ok, danke :)
    Ich versuche das ganze jetzt noch als Function zu verpacken, ich melde mich hier wenn ich fertig bin.

  • Installed Software

    • Madara
    • 28. Dezember 2013 um 22:14

    Das scheint soweit zu funktionieren, wäre nett wenn du noch erklären könntest wie genau das funktioniert, damit ich es auch verstehe :)

  • Installed Software

    • Madara
    • 28. Dezember 2013 um 21:30

    misterspeed
    Danke das ist auf jeden Fall schonmal ein Fortschritt.
    Bei mir werden allerdings auch noch Manche Einträge in verschiedenen Sprachen aufgelistet:

    [Blockierte Grafik: http://s7.directupload.net/images/131228/5wxp7yf3.png]


    Wie wäre das zu lösen?
    Ich wüsste nicht wie ich das realisieren kann, da hier ein simples StringInStr nicht sehr hilfreich ist.
    Und in der Systemsteuerung werden ja auch keine Einträge in unterschiedlichen Sprachen angezeigt...

  • Installed Software

    • Madara
    • 28. Dezember 2013 um 19:57

    Hallo liebe Community.

    Ich bin neu hier und hoffe das ich hier richtig bin :)
    Ich habe ein kniffliges Problem.
    Zuerst mal, was möchte ich eigentlich machen?
    Ich würde mir gerne die installierten Programme auf meinem Computer auslesen.
    Das ist nicht das Problem, da man dies sehr leicht über die Registry erreichen kann.
    Aber wenn es so einfach wäre, würde ich ja nicht hier posten :D
    Das Problem ist folgendes:
    Beim auslesen gibt es viele Einträge (z.B. Windows Live Messenger etc mehrfach!)
    Ich verwende aktuell dieses Skript:

    [autoit]


    #include <GUIConstants.au3>

    $gui_width = 500
    $gui_height = 600

    Global $count = 1, $all_keys = "", $main_key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

    GUICreate("Installed Software", $gui_width, $gui_height, @Desktopwidth/2 - $gui_width/2, @DesktopHeight/2 - $gui_height/2 - 75)
    $gui_list = GUICtrlCreateList ("", 10, 10, $gui_width - 20, $gui_height - 20)
    GUISetState ()

    While 1
    $act_key = RegEnumKey ($main_key, $count)
    If @error <> 0 then ExitLoop
    $act_name = RegRead ($main_key & "" & $act_key, "Displayname")
    $act_name = StringReplace ($act_name, " (remove only)", "")
    If $act_name <> "" Then $all_keys = $all_keys & $act_name & "|"
    $count = $count + 1
    WEnd

    GUICtrlSetData ($gui_list, $all_keys)
    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    Wend

    [/autoit]

    Hier kann man erkennen das es mehrere Einträge vielfach gibt:

    [Blockierte Grafik: http://s7.directupload.net/images/131228/cwcwv9kq.gif]


    Ich habe vieles versucht, auch die Einträge aus der Registry auszulesen, selbes Problem.
    Allerdings, wenn man mal in die Systemsteuerung schaut, fällt auf, das dieses Problem dort nicht auftaucht:

    [Blockierte Grafik: http://s7.directupload.net/images/131228/ymvpeawy.gif]


    Kann mir jemand helfen die Installierten programme so auszulesen wie es in der Systemsteuerung auch gemacht wird?
    Normalwerweise wird ja dieser Key verwendet:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall



    Wo liegt das Problem?
    WMI mit Namespace: root/CiMv2 in Class: Win32_Product hat nichts gebracht, gleiches Problem.


    Kann mir jemand helfen?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™