Hi BugFix,
ich habe festgestellt, dass bei Win+Up in der WINDOWPOS Struktur das Flag 0x00008000 gesetzt ist. Dies scheint ein undokumentiertes Flag zu sein.
LG
Greenhorn
Hi BugFix,
ich habe festgestellt, dass bei Win+Up in der WINDOWPOS Struktur das Flag 0x00008000 gesetzt ist. Dies scheint ein undokumentiertes Flag zu sein.
LG
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.
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:
; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
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:
$TextBox_IP_Adress = GUICtrlCreateEdit("", 200, 50, 209, 20, $ES_WANTRETURN) ;Eingabefeld IP Adresse
;----------------------------------------------------Globale Variablen --------------------------------------------------------------------------
;--------------------------------------------------- Programmschleife ---------------------------------------------------------------------------
;--------------------------------------------------- Example ----------------------------------------------------------------------------
; Assign a Local variable the socket and connect to a listening socket with the IP Address and Port specified.
MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not connect, Error code: " & $iError)
; Assign Locales Constant variables the number representing 4 KiB; the binary code for the end of the file and the length of the binary code.
MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Connection lost, Error code: " & $iError)
;---------------------------------- Schreibfunktion in Textfeld ---------------------------------------------------------------------
LG
Greenhorn
Hallo Jochen,
Zeile 42 auskommentieren und Zeile 59 in Zeile 9 verschieben, dann sollte es klappen.
Gruß
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.
Moin Tweaky,
versuche es mal mit _WinAPI_GetWindowPlacement. Da sollten die korrekten Werte enthalten sein.
Edit: Sorry, meinte _WinAPI_GetWindowInfo ... WINDOWINFO structure
Gruß
Greenhorn
Hi Tweaky,
in Deinem Beispielskript gibt es keinen String der nicht mit "IMG-" beginnt ...
Das hier funktioniert für mich:
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 ...
Wie kann ich erreichen, das Windows erst den Standard-Rahmen zeichnet auf den ich dann etwas drauf zeichne?
...
Scheinlösungen wie Overlay-Windows die dem Fenster folgen usw würde ich gern vermeiden.
Falls Du mit "Standard-Rahmen" Aero-Glass meinst, dann wirst Du hier fündig:
Custom Window Frame Using DWM
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ütztgeht 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,
Du musst mit _LEDTXT_Destroy ( ) die Ressourcen wieder freigeben.
Ich denke mal daran wird es liegen ...
Grüße
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.
ZitatDie 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
... ich glaube mittlerweile, daß es am byte alignment liegt,...
Ja, tut es. Die Struktur ist DWORD-Ausgerichtet.
Global Const $tagINPUT_RECORD = "align 4;WORD evtyp;" & $tagKEYEVENTREC