Du brauchst
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit]Du brauchst
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit]Hallo Jarmado!
Es freut mich, dass du die UDF nutzen könntest.
Ich habe leider nicht wirklich viel Error-Handling bei den Funktionen betrieben. Ich weiß aber auch immer welche DBs es auf der SPS gibt. Außerdem gibt es dazu die Funktion _daveListBlocksOfType().
Die angehängte UDF ist auch bei weitem nicht mehr die aktuellste, aber wenn alles funktioniert, dann reicht das ja.
Viel Spaß auch weiterhin damit!
Achja, ich dachte das geht nur bei der eigenen Gui!
Aber wenn das Programmfenster, das die Auslastung erzeugt nicht aktiv ist, dann nützt das ja auch nicht viel (außer man bastelt drum herum).
Nicht dass ich wüßte!
Aber es gibt Funktionen um die CPU-Last auszulesen, und dann kanst du z.B mit 50% vergleichen, darüber pausieren und darunter fortfahren.
Alles Gute ihr beiden!
Vielen Dank, dass ihr so tüchtig hier im Forum mitarbeitet.
Das gibt's ja nicht!!
Jetzt ist der schon wieder ein Jahr älter geworden!!
Also dann, alles Gute!! Bleib gesund!!
Gut zu wissen, aber so kann sie jetzt jeder und vor allem einfacher verwenden.
Danke!
Hab noch einen überflüssigen WINAPI-Aufruf eliminiert (damit es noch schneller wird
)
Danke!
Hatte das schon mal für meinen CSV-Editor gebraucht und damals die gleiche Lösung wie Oscar gefunden. Nun habe ich einen besseren Weg gefunden.
Hab die Funktion noch umbenannt, weil das ja nicht nur für Labels passt.
Da das Thema gerade aktuell ist (_FilePathTrimToLabelWidth), hab ich mal MSDN befragt wie man das macht und bin auf folgende Lösung gekommen:
#include <WinAPI.au3>
Global $hGui = GUICreate('_GuiCtrlSetPath by funkey', 600, 200)
Global $nPath1 = GUICtrlCreateLabel('', 10, 10, 300, 50)
GUICtrlSetBkColor(-1, 0xCCCCCC)
GUICtrlSetFont(-1, 30)
_GuiCtrlSetPath($nPath1, "C:\path1\path2\sample.txt")
Global $nPath2 = GUICtrlCreateLabel('', 10, 80, 580, 60)
GUICtrlSetBkColor(-1, 0xCCCCCC)
GUICtrlSetFont(-1, 40)
_GuiCtrlSetPath($nPath2, "C:\path1\path2\sample.txt")
GUICtrlCreateInput("", 10, 150, 200, 20)
_GuiCtrlSetPath(-1, "C:\path1\path2\path3\path4\path5\path6\sample.txt", 4)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
Until GUIGetMsg() = -3
Func _GuiCtrlSetPath($nID, $sPath, $iFit = 0)
;coded by funkey
;2011, Nov 24th
Local $hCtrl = GUICtrlGetHandle($nID)
Local $hDC = _WinAPI_GetDC($hCtrl)
Local $tPath = DllStructCreate("char[260]")
Local $pPath = DllStructGetPtr($tPath)
DllStructSetData($tPath, 1, $sPath)
Local $hFont = _SendMessage($hCtrl, 49, 0, 0, 0, "wparam", "lparam", "hwnd") ;WM_GETFONT
Local $hFont_old = _WinAPI_SelectObject($hDC, $hFont)
Local $aPos = ControlGetPos($hCtrl, "", "")
[/autoit] [autoit][/autoit] [autoit]DllCall("Shlwapi.dll", "BOOL", "PathCompactPath", "handle", $hDC, "ptr", $pPath, "int", $aPos[2] - $iFit)
[/autoit] [autoit][/autoit] [autoit]_WinAPI_SelectObject($hDC, $hFont_old)
_WinAPI_DeleteDC($hDC)
GUICtrlSetData($nID, DllStructGetData($tPath, 1))
Return DllStructGetData($tPath, 1)
EndFunc ;==>_GuiCtrlSetPath
Edit: Funktionsnamen geändert und ein wenig erweitert. Das ganze funktioniert ja nicht nur bei Labeln
Nettes Skript,
aber ich finde DLLs immer noch am praktischsten und am kompatibelsten.
Über _WinAPI_BeginUpdateResource, _WinAPI_UpdateResource und _WinAPI_EndUpdateResource können auch relativ einfach Resourcen einer PE-Datei (DLL, EXE) gelöscht, geändert oder hinzugefügt werden.
Freut mich, das du es geschafft hast!!
Das 4. Icon brauchst du anscheinend nicht.
Meine Funktion scheint nur bis WinXP zu funktionieren. Ab Vista wurden die MsgBoxen anscheinend umgebaut, so dass die Icons immer neu geladen werden.
Den nächsten Lösungsvorschlag (immer noch nicht mit Pixelsearch!) hätte ich mit der Funktion _WinAPI_GetIconInfoEx aus der WinAPIEx-UDF.
Da wird ein Array zurückgegeben, und das 6. Element ([5]) gibt die ID des geladenen Icons in dem jeweiligen Modul zurück. Da kannst du die 4 Zahlen dann wieder unterscheiden.
Hab mal was gebastelt, sollte besser sein als Pixelsearch.
[autoit]#Include <WinAPI.au3>
[/autoit][autoit][/autoit][autoit]$sIcon = _GetIconFromMsgBox("Titel oder Handle der MsgBox")
ConsoleWrite($sIcon & @CR)
Func _GetIconFromMsgBox($hMsgBox)
Local $sRet
Local Const $STM_GETICON = 369
Local $hCtrl = ControlGetHandle($hMsgBox, "", "Static1")
Local $hIcon = _SendMessage($hCtrl, $STM_GETICON, 0, 0, 0, "wparam", "lparam", "hwnd")
Switch $hIcon
Case _WinAPI_LoadIcon(0, 32513) ;$IDI_ERROR
Return "Stop-sign icon"
Case _WinAPI_LoadIcon(0, 32514) ;$IDI_QUESTION
Return "Question-mark icon"
Case _WinAPI_LoadIcon(0, 32515) ;$IDI_EXCLAMATION
Return "Exclamation-point icon"
Case _WinAPI_LoadIcon(0, 32516) ;$IDI_INFORMATION
Return "Information-sign icon"
EndSwitch
Return "icon not found"
EndFunc
Func _WinAPI_LoadIcon($hInstance, $icon)
Local $aIcon = DllCall("user32.dll", "hwnd", "LoadIcon", "hwnd", $hInstance, "int", $icon)
Return $aIcon[0]
EndFunc
Einfach Button-Text "&OK" verwenden für ALT+o , oder "A&bbrechen" für ALT+b.
Alles Gute zum 32.Geburtstag Xenobiologist!!
Viel Glück und Gesundheit, bleib so wie du bist.
[Blockierte Grafik: http://img11.imageshack.us/img11/7720/glitter15.gif]
Wie wäre es so?
#Include <WinAPI.au3>
#include <Constants.au3>
_ProcessWaitProgress("iexplore.exe")
[/autoit] [autoit][/autoit] [autoit]Func _ProcessWaitProgress($sProcess)
Local Const $WM_USER = 0x0400
Local Const $PBM_SETMARQUEE = ($WM_USER + 10)
Local Const $PBS_MARQUEE = 0x8
ProgressOn("Warten auf Prozess", "Warten bis " & $sProcess & " existiert")
Local $hWnd = WinWait("Warten auf Prozess")
Local $hProgress = ControlGetHandle($hWnd, "", "msctls_progress321")
_WinAPI_SetWindowLong($hProgress, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($hProgress, $GWL_STYLE), $PBS_MARQUEE))
_SendMessage($hProgress, $PBM_SETMARQUEE, 1, 0)
Do
Sleep(10)
Until ProcessExists($sProcess)
EndFunc
RapIt: Dreimal darfst du raten welche Icons er will!
Natürlich die Icons der jeweiligen Exe-Datei.
Am besten du nimmst RestrictControlRegExp.au3! Diese UDF verwende ich nämlich genau für solche Fälle.
Probier mal mit Shift + Rechts.
Edit: Oder so:
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit][autoit][/autoit][autoit]Global $hWnd = WinGetHandle("Adobe Reader")
[/autoit][autoit][/autoit][autoit]ControlSend($hWnd, "", "ScrollBar3", "{END}")
ControlSend($hWnd, "", "ScrollBar4", "{END}")