Warum wollt ihr alles im Leben umsonst?
Mach deinen eigenen FTP-Server, ist kein Aufwand - bedarf nur etwas Hardware (z.B. NAS mit integriertem FTP-Server) und einen DSL-Anschluß mit ordentlichem UpLoad.
Beiträge von BugFix
-
-
Naja, ich bin z.B. totaler Autodidakt und habe alle meine Kenntnisse durch Bücher/Foren lesen und Probieren erworben.
Allerdings muß ich zustimmen, dass das bei Assembler u.U. trotzdem nicht ausreicht. Ich hab bisher nur mal ein wenig reingeschnuppert und denke, dass es ziemlich anstrengend ist.
Aber wenn du dich unbedingt ranwagen möchtest....
-
Ich vermute mal ganz stark, dass um diese Funktion herum eine andere GUI werkelt - ebenfalls mit "$msg = GUIGetMsg" ?
Das überschneidet sich natürlich, bei mehreren Fenstern mußt du dann auch Abfragen von welchem Fenster das Ereignis kommt. ( GUIGetMsg(1) liefert Array mit diesen Infos, s. Hilfe)
Besser ist sowieso, alle GUI beim Programmstart (nicht in der Funktion) zu erstellen und sie dann mit GUISetState($gui, @SW_SHOW) anzuzeigen. -
Hi,
um Abmaße von Fensterrändern, Clientflächen etc. zu erhalten kann man ja die Funktion _WinAPI_GetSystemMetrics verwenden.
Diese Funktion gibt für den übergebenen Index den entsprechenden Wert zurück.
In meiner Funktion werden alle ermittelbaren Werte in einem Array zurückgegeben. Die Funktion enthält einen optionalen Parameter, mit dem die ermittelbaren Größen in einer MsgBox oder über Commandline ausgegeben werden. Dabei wird die Funktion selbst nicht ausgeführt.
Das soll als Hilfe für den Benutzer dienen - denn wer hat schon immer alle 38 möglichen Abfragegrößen parat
.
Der Vollständigkeit halber sind auch die Namen der Windowskonstanten aufgelistet.Spoiler anzeigen
[autoit]#include<array.au3>
[/autoit]
$a = _GetSystemMetrics()
_ArrayDisplay($a)
;===============================================================================
; Function Name: _GetSystemMetrics([$ShowVal=-1])
; Description:: Rückgabe verschiedener Systeminformationen (Maße)
; Parameter(s): optional $ShowVal -1 Parameter nicht verwendet (Standard)
; 0 Ausgabe aller möglichen Werte in MsgBox
; 1 Ausgabe aller möglichen Werte in Commandline
; Bei Verwendung des optionalen Parameters wird die Funktion selbst
; NICHT ausgeführt.
; Return Value(s): Standard Array mit allen ermittelten Werten
; opt. Param entsprechende Auflistung
; Author(s): BugFix
;===============================================================================
Func _GetSystemMetrics($ShowVal=-1)
Local $arSysMetric[38][3] = [ _
["SM_CXSCREEN",0,"Bildschirmbreite"], _
["SM_CYSCREEN",1,"Bildschirmhöhe"], _
["SM_CXFULLSCREEN",16,"Breite der Fenster Client Fläche"], _
["SM_CYFULLSCREEN",17,"Höhe der Fenster Client Fläche"], _
["SM_CYMENU",15,"Höhe des Menüs"], _
["SM_CYCAPTION",4,"Höhe von Überschrift/Titel"], _
["SM_CXFRAME",32,"Breite des Fenster Rahmens"], _
["SM_CYFRAME",33,"Höhe des Fenster Rahmens"], _
["SM_CXHSCROLL",21,"Breite des Pfeil Bitmap auf der horizontalen Scrollbar"], _
["SM_CYHSCROLL",3,"Höhe des Pfeil Bitmap auf der horizontalen Scrollbar"], _
["SM_CXVSCROLL",2,"Breite des Pfeil Bitmap auf der vertikalen Scrollbar"], _
["SM_CYVSCROLL",20,"Höhe des Pfeil Bitmap auf der vertikalen Scrollbar"], _
["SM_CXSIZE",30,"Breite des Bitmaps in der Titelleiste"], _
["SM_CYSIZE",31,"Höhe des Bitmaps in der Titelleiste"], _
["SM_CXCURSOR",13,"Breite des Cursors"], _
["SM_CYCURSOR",14,"Höhe des Cursors"], _
["SM_CXBORDER",5,"Breite des Fenster Rahmens der nicht ausgemessen werden kann"], _
["SM_CYBORDER",6,"Höhe des Fenster Rahmens der nicht ausgemessen werden kann"], _
["SM_CXDOUBLECLICK",36,"Breite des Rechtecks um die Position des ersten Klicks. Der zweite Klick muß in denselbem Rechteckbereich auftreten."], _
["SM_CYDOUBLECLICK",37,"Höhe des Rechtecks um die Position des ersten Klicks. Der zweite Klick muß in denselbem Rechteckbereich auftreten."], _
["SM_CXDLGFRAME",7,"Breite des Dialog Fenster Rahmen"], _
["SM_CYDLGFRAME",8,"Höhe des Dialog Fenster Rahmen"], _
["SM_CXICON",11,"Breite des Icon"], _
["SM_CYICON",12,"Höhe des Icon"], _
["SM_CXICONSPACING",38,"Breite des Rechtecks, welches das System nutzt zum Positionieren von gekachelten (tiled) Icons"], _
["SM_CYICONSPACING",39,"Höhe des Rechtecks, welches das System nutzt zum Positionieren von gekachelten (tiled) Icons"], _
["SM_CXMIN",28,"Minimale Breite des Fensters"], _
["SM_CYMIN",29,"Minimale Höhe des Fensters"], _
["SM_CXMINTRACK",34,"Minimale Tracking Breite des Fensters"], _
["SM_CYMINTRACK",35,"Minimale Tracking Höhe des Fensters"], _
["SM_CXHTHUMB",10,"Breite der Scrollbox auf horizontalaer Scrollbar"], _
["SM_CYVTHUMB",9,"Breite der Scrollbox auf vertikaler Scrollbar"], _
["SM_DBCSENABLED",42,"Rückgabe eines Wertes ungleich Null, wenn die aktuelle Windows Version Double-byte Zeichen verwendet, anderenfalls Rückgabe von Null."], _
["SM_DEBUG",22,"Rückgabe eines Wertes ungleich Null, wenn die Windows Version eine Debugging Version ist."], _
["SM_MENUDROPALIGNMENT",40,"Ausrichtung von Popup Menüs. Wenn Null, ist die linke Seite ausgerichtet wie die linke Seite des korrespondierenden Menüleisten Eintrags. Wenn Nicht-Null, wie dessen rechte Seite."], _
["SM_MOUSEPRESENT",19,"Nicht-Null, wenn eine Hardware Maus installiert ist."], _
["SM_PENWINDOWS",41,"Handle der Pen Windows Dynamic Link Library falls Pen Windows installiert ist."], _
["SM_SWAPBUTTON",23,"Nicht-Null, wenn linker und rechter Maus-Button getauscht sind."]]
If $ShowVal = 0 Or $ShowVal = 1 Then
Local $sOut = ''
For $i = 0 To UBound($arSysMetric) -1
$sOut &= '[' & $i & '] - ' & $arSysMetric[$i][0] & @TAB & $arSysMetric[$i][2] & @CRLF
Next
$sOut = StringTrimRight($sOut, 2)
EndIf
Switch $ShowVal
Case 0
Return MsgBox(0, 'Auflistung Rückgabewerte', $sOut)
Case 1
Return ConsoleWrite($sOut & @CRLF)
Case Else
Local $arOut[38], $ret, $dll = DllOpen("user32.dll")
For $i = 0 To UBound($arSysMetric) -1
$ret = DllCall($dll, "int", "GetSystemMetrics", "int", $arSysMetric[$i][1])
If IsArray($ret) Then $arOut[$i] = $ret[0]
Next
DllClose($dll)
Return $arOut
EndSwitch
EndFunc ;==>_GetSystemMetrics -
Achso, dann hab ich das fehlinterpretiert
- Ich dachte er will absolut messen. -
anno2008:
Das ist wahrscheinlich sehr optimistisch gedacht, weil:
- Du hast keine Referenzgröße, weißt gar nicht die Abmaße eines Pixels
- Ebenfalls nicht bekannt ist die Pixeldichte (PPI)
- Diese Werte sind variabel und bei jedem User unterschiedlich. -
Hi Raupi, Danke für den Link. Werde das mal in eine UDF packen.
Ist aber auch nur ein Notnagel, da meist die Tastenfunktion nur temporär/programmabhängig geändert werden soll. Der Regwert muß also ständig geswitcht werden.
Ich bastel grad noch an der Variante, das Tastenevent abzufangen und mit einem neuen Wert zu belegen. Will aber noch nicht richtig.Hier mal noch, basierend auf dem GetAsyncKeyState-Aufruf, eine stabile _IsPressed() - Version. Syntax ist mit dieser identisch - also Abfrage String-HexKey.
[autoit]Func _IsPressedAsync($sHexKey)
[/autoit]
Local $ret, $i
For $i = 1 To 256
$ret = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", '0x' & Hex($i, 2))
If $ret[0] <> 0 And Hex($i, 2) = $sHexKey Then Return True
Next
Return False
EndFunc -
Hab noch 'ne andre Möglichkeit gefunden.
[autoit]
Hier in Endlosschleife:#Include <WinAPI.au3>
[/autoit][autoit][/autoit][autoit]
$iKey = 110While True
[/autoit]
Sleep(100)
If _WinAPI_GetAsyncKeyState($iKey) Then Send('{BS}.')
WEnd -
Hi Lina,
[autoit]
ist vllt. nicht die eleganteste Lösung, weil ich das Komma nicht verhindern kann, sondern anschließend lösche und einen Punkt setze.
Hier schau mal:#Include <Misc.au3>
[/autoit]
While 1
Sleep(250)
If _IsPressed('6E') Then Send('{BS}.')
WEndEdit:
Habs nochmal getestet, _IsPressed() ist sehr unzuverlässig und läßt einige Tastaturanschläge durch. Verwende folgende Variante:Spoiler anzeigen
[autoit]Global $dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
If _IsNumCommaPressed($dll) Then Send('{BS}.')
WEnd
DllClose($dll)Func _IsNumCommaPressed($dll)
[/autoit]
Local $ret, $i
For $i = 1 To 256
$ret = DllCall($dll, "int", "GetAsyncKeyState", "int", '0x' & Hex($i, 2))
If $ret[0] <> 0 And Hex($i, 2) = '6E' Then Return True
Next
Return False
EndFunc -
Fehlt mir irgendwie das Verständnis. Sind euch die Nutzungsbedingungen total Banane, dass offensichtlich dagegen verstoßen wird?
Zitat von Nutzungsbedingungen RapidsharePersonen, die Programme schreiben mit dem Ziel, gegen diese Nutzungsbedingungen zu verstossen, werden strafrechtlich verfolgt und für den entstandenen Schaden bzw. Verlust haftbar gemacht.
-
Hi Gun-Food,
ebenfalls die besten Grüße und Wünsche von mir.
Auf weiterhin frohe Skripterzeiten.
-
Sag mal klar an, was du tun willst. Du solltest aber vorher unbedingt hier einen Blick drauf werfen:
https://autoit.de/index.php?page=Forumrules. Vielleicht erübrigt sich dann ja deine Frage. -
Und ich möchte immer das TET raus haben.
[autoit]
Also verstehe ich richtig: Du willst "TET" - oder 3 andere Buchstaben an diese Position entfernen, also ersatzlos aus dem String löschen?$str = "|!TET13060NAU00!"
[/autoit]
$str = Stringleft($str, 2) & StringTrimLeft($str, 5)
Man muß nicht zwingend RegEx verwenden, wenn Stringoperationen es auch ermöglichen. Zumal diese auch schneller sind als RegEx. -
-
-
Kann man an minimierte Programme Tastenbefehle senden, ohne dass sie dabei geöffnet werden?
Zitat von AutoIt-HilfeSends simulated keystrokes to the active window.
Erklärt alles.
-
Hier mal das Hilfe-Bsp. umgestrickt.
Spoiler anzeigen
[autoit]#Include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayMenuMode",1)$microfonitem = TrayCreateItem("Mute Microphone")
[/autoit] [autoit][/autoit] [autoit]
$speakeritem = TrayCreateItem("Mute Speakers")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")TraySetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = TrayGetMsg()
Select
Case $msg = $microfonitem
MsgBox(0, '', 'Func Mikro aus')
; Mikro aus
Case $msg = $speakeritem
MsgBox(0, '', 'Func Speaker aus')
; Speaker aus
Case $msg = $exititem
ExitLoop
EndSelect
WEndExit
[/autoit]Wenn es für Mic aus und Speaker aus Hotkeys gibt, kannst du diese ja ausführen bei Aufruf des TrayItems.
-
Es geht ihm nicht um das Traymenü selbst, sondern er will Mute Microphone und Mute Speakers von Ts benutzen.
Nein, es geht im darum diese Punkte aus einem eigenen Traymenü aufzurufen.Ruf die SuFu auf: - Erweiterte Suche - Haken raus bei "exakter Treffer" !! - und dann gib ein: Traymenü ==> über 100 Treffer
-
Hier bekomme ich die Fehlermeldung, dass die Variable "$TRAY_EVENT_PRIMARYDOUBLE" nicht deklariert ist.
#Include <Constants.au3>
-
Hi,
da hatte grad letztens jemand für eine Widerstandsberechnung nach gefragt.
Ich hoffe mein Bsp. funzt.
Habbe jetzt nur Addition drin, kannst das ja abändern in den Rechenfunktionen.Edit:
Die Clearbutton sind beabsichtigt, damit legst du fest welches Feld neu berechnet werden soll nach erfolgter erster Rechnung. Denn wenn alle Felder bereits gefüllt sind und du nur einen Wert überschreibst, kann das programm ja nicht ahnen, welchen der zwei anderen Werte du nun berechnen möchtest ;-).Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)Global $is1 = False, $is2 = False, $is3 = False
[/autoit] [autoit][/autoit] [autoit]GUICreate('Test')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, 'ende')
GUICtrlCreateLabel('1: ', 15, 15, 30)
$1 = GUICtrlCreateInput('', 50, 15, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_1')
GUICtrlCreateButton('clear', 120, 15, 40, 20)
GUICtrlSetOnEvent(-1, '_c1')
GUICtrlCreateLabel('2: ', 15, 45, 30)
$2 = GUICtrlCreateInput('', 50, 45, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_2')
GUICtrlCreateButton('clear', 120, 45, 40, 20)
GUICtrlSetOnEvent(-1, '_c2')
GUICtrlCreateLabel('3: ', 15, 75, 30)
$3 = GUICtrlCreateInput('', 50, 75, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_3')
GUICtrlCreateButton('clear', 120, 75, 40, 20)
GUICtrlSetOnEvent(-1, '_c3')
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _1()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($1) <> '' Then
$is1 = True
Else
$is1 = False
EndIf
If $is1 And $is2 Then
_calc3()
ElseIf $is1 And $is3 Then
_calc2()
EndIf
EndFuncFunc _2()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($2) <> '' Then
$is2 = True
Else
$is2 = False
EndIf
If $is2 And $is1 Then
_calc3()
ElseIf $is2 And $is3 Then
_calc1()
EndIf
EndFuncFunc _3()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($3) <> '' Then
$is3 = True
Else
$is3 = False
EndIf
If $is3 And $is2 Then
_calc1()
ElseIf $is3 And $is1 Then
_calc2()
EndIf
EndFuncFunc _calc1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($1, GUICtrlRead($2) + GUICtrlRead($3))
EndFuncFunc _calc2()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($2, GUICtrlRead($1) + GUICtrlRead($3))
EndFuncFunc _calc3()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($3, GUICtrlRead($2) + GUICtrlRead($1))
EndFuncFunc _c1()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($1, '')
_clearCheck(1)
EndFuncFunc _c2()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($2, '')
_clearCheck(2)
EndFuncFunc _c3()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($3, '')
_clearCheck(3)
EndFuncFunc _clearCheck($N)
[/autoit]
Switch $N
Case 1
If (GUICtrlRead($2)<>'') And (GUICtrlRead($3)<>'') Then
$is2 = True
$is3 = True
$is1 = False
EndIf
Case 2
If (GUICtrlRead($1)<>'') And (GUICtrlRead($3)<>'') Then
$is1 = True
$is3 = True
$is2 = False
EndIf
Case 3
If (GUICtrlRead($2)<>'') And (GUICtrlRead($1)<>'') Then
$is2 = True
$is1 = True
$is3 = False
EndIf
EndSwitch
EndFunc