Hast du auch die aktuelle MozRepl? (MozRepl 1.1Beta2 hab ich)
guckst du ![]()
Installiert ist MozRepl 1.1beta2,
Hast du auch die aktuelle MozRepl? (MozRepl 1.1Beta2 hab ich)
guckst du ![]()
Installiert ist MozRepl 1.1beta2,
Nicht für die Installation - um die FF.au3 zu nutzen muß FF mit MozRepl kommunizieren, tut es aber hier nicht.
Daher meine Frage ob irgendwer FF.au3 in Verbindung mit dem FF4 nutzen kann.
Ja aber wo ist das Problem? Einfach, wie schon mehrfach gesagt:
#Include <GuiEdit.au3>
GUICreate('')
$edit = GUICtrlCreateEdit('', 10, 10, 300, 200)
GUICtrlSetData(-1, @CRLF & @CRLF & @CRLF & @CRLF & 'Ilse')
$btInsert = GUICtrlCreateButton('Einfügen hinter Ilse', 10, 230, 120, 20)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $btInsert
$iPos = StringInStr(GUICtrlRead($edit), 'Ilse', 1)
If $iPos Then
_GUICtrlEdit_InsertText($edit, @CRLF & "Dieser Code wird eingefügt", $iPos + StringLen('Ilse'))
EndIf
EndSwitch
WEnd
Hat jemand von euch die FF.au3 mit dem FF4 verwenden können?
Ich bekomme folgenden Fehler:
__FFWaitForRepl ==> MozRepl Exception: !!! [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"
Installiert ist MozRepl 1.1beta2, das einzige Mozrepl-Plugin, das sich im FF4 installieren ließ.
bin langsam am Ende mit den Nerven
Ilse, zeig doch bitte mal den Text, den du verarbeiten möchtest. Und dann sag wo, was eingefügt werden soll. Deine Gehversuche verwirren uns mehr als dass sie Klarheit in dein Problem bringen.
TheLuBu
Du hast einige Fehler drin:
$search = StringinStr($aZielRead[$i],"ilse") ;String wird gesucht
$search = StringinStr($aZielRead[$i],"ilse", 1) ; hier sollte man CaseSens arbeiten um nicht Teilstrings zu finden
_GUICtrlEdit_InsertText($Ziel, @CRLF& "Text", $search) ; fügt den Text hinter dem gefundenen ein
; Falsch! $search gibt die Startposition des gesuchten Strings an - also wird DAVOR eingefügt
Um Daten auf meinem PC zu löschen reicht der 'normale' Löschvorgang völlig aus. Ich brauch mich nicht selbst davor zu schützen, dass ich meine Daten wiederherstellen könnte. ![]()
Interessant wird es nur, falls z.B. ein Laptop in der Firma von einem Mitarbeiter zum andren wechselt und man private Daten drauf hatte. Dazu verwende ich dann auch Acronis. Kommt aber nur alle 5 Jahre mal vor. ![]()
Ich verstehe nicht, weshalb du _StringBetween() verwendest. Du möchtest doch die Position im Edit herausfinden, dazu brauchst du StringInStr(). :wacko:
Lies mal mein Array-Tut, dann verstehst du auch das Warum. ![]()
Das hat nicht direkt mit dem Tab zu tun. Das passiert dir mit jedem GUI-Ctrl das du auf das Fenster setzt.
Meine Erklärung, die ich mir aus dem Verhalten erstellt habe:
Wenn du das Fenster mit gesetztem Ctrl minimierst passiert nix - aber beim Wiederherstellen wird erst der Fokus gesetzt und bekommt dann sofort die Kill-Message. Vermutlich, weil dann das Ctrl den Fokus hat.
Da du aber den Fokus des Fensters abfragst bekommst du dort keine Änderungen mehr - es hat ihn ja abgegeben.
Edit:
Übrigens gibt $wParam immer das 'entgegengesetzte' Handle zurück:
- KILLFOCUS, wParam = Fenster, das den Fokus erhalten hat
- SETFOCUS, wParam = Fenster, das den Fokus verloren hat
Aber so richtig verständlich ist es nicht. Minimiere mal und hol zurück. Seltsamerweise bekommt das Tab (oder das entsprechende Ctrl) den Fokus, verliert ihn aber nicht, zumindest läuft keine Msg dazu auf.
#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("", 400, 300)
$hTab = GUICtrlCreateTab(0, 0, 400, 300)
GUISetState()
ConsoleWrite('hWnd TAB: ' & GUICtrlGetHandle($hTab) & @CRLF)
ConsoleWrite('hWnd GUI: ' & $hGui & @CRLF)
GUIRegisterMsg($WM_KILLFOCUS, "WM_KILLFOCUS")
GUIRegisterMsg($WM_SETFOCUS, "WM_SETFOCUS")
While GUIGetMsg() <> -3
Sleep(10)
WEnd
Func WM_KILLFOCUS($hWnd, $Msg, $wParam, $lParam)
ConsoleWrite('Fokus erhalten: ' & $wParam & @CRLF)
ConsoleWrite("!KILLFOCUS " & $hGui & " " & $hWnd & " " & $wParam & @CRLF)
EndFunc ;==>WM_KILLFOCUS
Func WM_SETFOCUS($hWnd, $Msg, $wParam, $lParam)
ConsoleWrite('Fokus verloren: ' & $wParam & @CRLF)
ConsoleWrite("+SETFOCUS " & $hGui & " " & $hWnd & " " & $wParam & @CRLF)
EndFunc ;==>WM_SETFOCUS
Stelle suchen, wo eingefügt werden soll und Position übergeben:
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]$Debug_Ed = False ; Check ClassName being passed to Edit functions, set to True and use a handle to another control to see it work
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local $hEdit, $iPos
; Create GUI
GUICreate("Edit Insert Text", 400, 300)
$hEdit = GUICtrlCreateEdit("", 2, 2, 394, 268, BitOR($ES_WANTRETURN, $WS_VSCROLL))
GUISetState()
; Set Margins
_GUICtrlEdit_SetMargins($hEdit, BitOR($EC_LEFTMARGIN, $EC_RIGHTMARGIN), 10, 10)
; Set Text
_GUICtrlEdit_SetText($hEdit, "1324890")
MsgBox(0, '', 'jetzt zwischen 4 und 8 "567" einfügen')
; zwischen 4 und 8 soll 567 eingefügt werden
$iPos = StringInStr(GUICtrlRead($hEdit), '8')
; Insert text
_GUICtrlEdit_InsertText($hEdit, "567", $iPos)
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Kann es nicht probieren, da ich kein 64er System habe. Aber wie Greenhorn schon richtig bemerkte: die DEVMODE-Struktur ist voll daneben, sollte so aussehen
typedef struct_devicemode {
WCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
BCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
DWORD dmDisplayFlags;
DWORD dmDisplayFrequency;
DWORD dmDisplayOrientation;
} DEVMODE;
Alles anzeigen
das entspricht dann auch der bereits angeführten Lösung von KaFu in AutoIt
$DEVMODE = DllStructCreate("char dmDeviceName[32];ushort dmSpecVersion;ushort dmDriverVersion;short dmSize;" & _
"ushort dmDriverExtra;dword dmFields;short dmOrientation;short dmPaperSize;short dmPaperLength;" & _
"short dmPaperWidth;short dmScale;short dmCopies;short dmDefaultSource;short dmPrintQuality;" & _
"short dmColor;short dmDuplex;short dmYResolution;short dmTTOption;short dmCollate;" & _
"byte dmFormName[32];dword dmBitsPerPel;int dmPelsWidth;dword dmPelsHeight;" & _
"dword dmDisplayFlags;dword dmDisplayFrequency")
Der Grundgedanke scheitert doch schon an einer einzigen Frage (ohne die programmiertechnischen Belange zu betrachten): Was ist besser?
Ist schneller besser oder gründlicher/genauer? Besser ist immer subjektiv und läßt sich (außer bei mathematischer Fragestellung) niemals klar definieren. ![]()
Ich verstehe nur nicht was die DLL bringen soll ?
Ist hier nur als Beispiel gedacht um zu zeigen wie man (rechenintensive) Vorgänge und Ressourcen auslagern kann.
(Wenn ich das Anliegen von RR04 richtig verstanden habe)
[OT] Auch wenn ich mich bei dem Pixel-Gedöns nicht wohl fühle: Solange kein Regelverstoß vorliegt gebe ich es frei. [/OT]
Zum Thema: Die Funktion gibt bei Erfolg ein Array zurück. Also prüfe die Rückgabe mit IsArray().
Na dann lass dir mal die Childs auflisten. Oder verwende zum Anschauen mal ein brauchbares Tool, wie "Winspector Spy" oder "Sysinternals Process Explorer".
K.A. was du machst (evtl. nicht kompiliert?). Läuft bei mir unter XP und 7 ohne Probleme.
Funktioniert doch tadellos, da du natürlich keinen Haltepunkt hast (warten auf Eingabe oder Endlosschleife) beendet sich das sofort wieder. ![]()
ZitatEDIT: bei der neuen konsole läuft nur das testscript, sonst kann die console nie erstellt werden. sowohl als include, als auch, wenn ich mein script integriere.
Ohne Code (wie immer) kann ich dazu nichts sagen.