Beiträge von Greenhorn

    Hallo BugFix,


    die WM_MOVING wird beim ziehen der Titelleiste gesendet und Du kannst über die RECT Struktur die Position des Fensters prüfen und ändern.

    WM_MOVING message


    Die WM_SIZING wird nur gesendet, wenn der Rahmen gezogen wird, bzw. die Größe geändert wird.


    Edit: Ich benutze meist die WM_WINDOWPOSCHANGING um die Fensterposition und -größe zu kontrollieren, aber cih denke die WM_MOVING ist in diesem Fall vllt besser geeignet.



    LG

    Greenhorn

    Hi,


    hier mal ein Ansatz:


    Den Rest musst Du Dir zusammenbasteln ...


    LG

    Greenhorn

    Hi, sorry, hatte damals nur flüchtig drübergeschaut und wollte auf den Konflikt zwischen Event-Mode und Nachrichtenschleife hinweisen.


    Wie auch immer, die anderen haben ja bereits erklärt wo der Wurm drin ist.


    So sollte es dann wirklich laufen:


    LG

    Greenhorn

    Moin,


    ist doch eigentlich ganz einfach.


    VG

    Greenhorn

    Wenn ich Dich richtig verstanden habe, dann suchst Du nach einem Weg die Breite des Fensterrahmens zu ermitteln um die Fensterposition ggf. anzupassen.

    Das Mitglied cxWindowBorders der WINDOWINFO Struktur sollte die (wirkliche) Breite des Fensterrahmens enthalten. ;)

    Hi Tweaky,


    in Deinem Beispielskript gibt es keinen String der nicht mit "IMG-" beginnt ... 8o


    Das hier funktioniert für mich:

    C
    #Region ;************ Includes ************
    #include <Array.au3>
    #EndRegion ;************ Includes ************
    $sFileName = "MRU-987654321"&@CRLF&"IMG-1232343"&@CRLF&"ILG-369852147"&@CRLF&"imf-741852963"
    $aTest = StringRegExp($sFileName, "(?m)(?i)^(?!img-)\N*", 3)
    _ArrayDisplay($aTest)


    LG

    Greenhorn


    Edit und p.s.: Die Frage ist natürlich auch: Wie liegt der Teststring vor ? Getrennt durch Leerzeichen, Zeilenumbruch, et. ?

    Moin,


    habe nichts zum Testen, aber damit solltest Du ein wenig herumspielen ...



    Global Const $WM_PRINT = 0x0317
    Global Const $WM_PRINTCLIENT = 0x0318


    Global Const $PRF_CHECKVISIBLE = 0x00000001
    Global Const $PRF_NONCLIENT = 0x00000002
    Global Const $PRF_CLIENT = 0x00000004
    Global Const $PRF_ERASEBKGND = 0x00000008
    Global Const $PRF_CHILDREN = 0x00000010
    Global Const $PRF_OWNED = 0x00000020


    ; ...


    Local $hDC = _WinAPI_GetDC($GUI_Graph)
    Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $memBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $GraphSizeX, $GraphSizeY)
    _WinAPI_ReleaseDC($hDC) ; richtig
    Local $hObj = _WinAPI_SelectObject($hMemDC, $memBitmap)
    ;~ _WinAPI_BitBlt($hMemDC, 0, 0, $GraphSizeX, $GraphSizeY, $hDC, 0, 0, $SRCCOPY)


    _SendMessage ($GUI_Graph, $WM_PRINT, $hMemDC, $PRF_CLIENT)


    $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($memBitmap)
    _GDIPlus_ImageSaveToFile($hBmp, @ScriptDir &"\test.jpg")
    _WinAPI_DeleteDC($hMemDC)
    _WinAPI_DeleteObject($memBitmap)
    ;~ _WinAPI_DeleteDC($hDC) fehler!

    Edit: Nachrichtenkonstanten nachgetragen ...
    Edit 2: Fehlerbereinigung
    Edit 3: ...

    ... im editfeld geht das ganze ja leider nicht.
    notepad++ kann es ... wie löse ich das problem ?


    Warum sollte das nicht gehen ?


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Constants.au3>


    Global $iWidth = 600
    Global $iHeight = 400


    Global $hGui = GUICreate("Test", $iWidth, $iHeight)
    Global $idEdit = GUICtrlCreateEdit ("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetResizing ($idEdit, $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT)
    GUICtrlSetFont ($idEdit, 10.5, 400, 0, "Terminal")
    GUICtrlSetData ($idEdit, FileRead (".\bomb_ascii.txt"))
    GUICtrlSetState ($idEdit, $GUI_FOCUS)
    GUISetState()



    While GUIGetMsg() <> -3
    WEnd

    Das sollte eigentlich funktionieren ...
    ( ungetestet ! )


    #include <Constants.au3>



    $sKeyName = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"


    ;~ $sDownloads = RegRead ($sKeyName, "{374DE290-123F-4565-9164-39C4925E467B}")
    $sMyMusic = RegRead ($sKeyName, "MyMusic")
    $sMyPictures = RegRead ($sKeyName, "MyPictures")
    $sMyVideos = RegRead ($sKeyName, "MyVideos")
    $sPersonal = RegRead ($sKeyName, "Personal")


    ;~ RegWrite ($sKeyName, "{374DE290-123F-4565-9164-39C4925E467B}", "REG_EXPAND_SZ", "D:\Zielverzeichnis\Downloads")
    RegWrite ($sKeyName, "MyMusic", "REG_EXPAND_SZ", "D:\Zielverzeichnis\Music")
    RegWrite ($sKeyName, "MyPictures", "REG_EXPAND_SZ", "D:\Zielverzeichnis\Pictures")
    RegWrite ($sKeyName, "MyVideos", "REG_EXPAND_SZ", "D:\Zielverzeichnis\Videos")
    RegWrite ($sKeyName, "Personal", "REG_EXPAND_SZ", "D:\Zielverzeichnis\Documents")


    DirCreate ("D:\Zielverzeichnis\\")


    ;~ DirMove ($sDownloads, "D:\Zielverzeichnis\\", $FC_OVERWRITE)
    DirMove ($sMyMusic, "D:\Zielverzeichnis\\", $FC_OVERWRITE)
    DirMove ($sMyPictures, "D:\Zielverzeichnis\\", $FC_OVERWRITE)
    DirMove ($sMyVideos, "D:\Zielverzeichnis\\", $FC_OVERWRITE)
    DirMove ($sPersonal, "D:\Zielverzeichnis\\", $FC_OVERWRITE)


    Wenn Du die Quellordner selbst auch umbenennen möchtest, z.B. "Pictures" zu "Bilder", dann kann es sein, dass Du noch ein paar andere Registrierungseinträge für die Bibliotheken ändern musst.


    EDIT: Hat die Quelltextformatierung doch glatt die abschließenden Backslashes unterschlagen ...

    Global Const $SND_ASYNC = 0x01
    Global Const $SND_LOOP = 0x08



    PlaySound ("Windows Exclamation.wav", 0, BitOR($SND_LOOP, $SND_ASYNC))
    MsgBox (64, "Neues Fenster", "blablabla")
    PlaySound ("", 0, 0)



    Func PlaySound ($pszSound, $hmod, $fdwSound)


    Local $ret = DllCall ("Winmm.dll", "BOOL", "PlaySoundW", "wstr", $pszSound, "HANDLE", $hmod, "DWORD", $fdwSound)
    Return $ret[0]


    EndFunc


    Grüße
    Greenhorn


    ... habe ich auch schon versucht hat leider nichts genützt :/ geht so mit nur langsamer hoch aber verhält sich trozdem steigend


    Dann hast Du evtl. irgendwo einen Teil übersehen.
    Auf jeden Fall musst Du die Ressourcen mit _LEDTXT_Destroy wieder freigeben, bevor Du mit _LEDTXT_Create_Gdi(Plus) neue Ressourcen anforderst.



    hatte auch versucht mit GUIDelete das komplette gui zu löschen und danach neu zu erstellen aber da habe ich dann andere Probleme ...


    Das wird nichts bringen, da die Ressourcen nicht mit AutoIt-eigenen Funktionen angefordert wurden.


    Führe Dein Skript doch einmal ohne die LED... Funktionen aus, und beobachte, ob es wirklich an den Funktionen liegt. Vielleicht liegt der Hase ganz woanders im Pfeffer ... ;)



    Gruß
    Greenhorn

    Hi BigRox,


    zuerst einmal: Ja, die 3er Version ist einfach nur Kacke.


    Das Problem liegt natürlich an SciTE. Wenn Du den Dialog mit "Ja" ( Speichern ) abnickst scheint SciTE erst ein Return auf die WM_QUERYENDSESSION zu geben und dann erst zu versuchen die Datei zu speichern.


    Am besten mal im EN Forum Jos darauf ansprechen ...



    Grüße
    Greenhorn

    Die WinCon.inc ist nicht im Ms SDK enthalten. Diese Datei ist für Assembler gedacht und gemacht.


    Ein Array aus Strukturen machst Du ganz einfach so:

    Global Const $tagKEYEVENTREC = "bool bKeyDown;word wRepeatCount; word wVirtualKeyCode; word wVirtualScanCode; wchar UnicodeChar; dword dwKontrolKeyState;"
    Global Const $tagINPUT_RECORD = "align 4;WORD evtyp;" & $tagKEYEVENTREC


    Global $tInp = DllStructCreate($tagINPUT_RECORD&$tagINPUT_RECORD) ; Array mit zwei Elementen

    Aber eigentlich sollte auch eine einfache Struktur ausreichen.


    Zitat

    Die betroffene Routine ist in dem Post über deinem ;-))


    Ich dachte da eher an ein ausführbares Beispiel ;)


    Grüße
    Greenhorn

    In der WinCon.h aus dem SDK 7.1 ist nichts von beidem PACKED ...
    In meiner WinCon.inc ist die Struktur INPUT_RECORD aber DWORD "aligned" ...



    In x86 als auch in x64 belegt die Struktur 20 Byte.


    Wäre schön, wenn Du ein Beispielskript zur Verfügung stellen könntest.


    Grüße
    Greenhorn