Beiträge von Schumi
-
-
-
Hallo Water,
da hast du dir ja eine Wahnsinnsarbeit gemacht – super.Mal so auf die Schnelle... vielleicht ist so etwas noch brauchbar?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Func CreateUdl($UdlFile)
; erstellt eine UDL-Datei
Local $file
$UdlFile = $UdlFile & ".udl" ; evtl. .udl erzwingen?
If FileExists($UdlFile)=0 Then
$file = FileOpen($UdlFile, 2)
; prüfen, ob Datei zum Schreiben geöffnet wurde
If $file = -1 Then
MsgBox(0, "Fehler", "Die UDL-Datei konnte nicht angelegt werden.")
Return -1 ; Fehler
EndIf
FileClose($file)
EndIf
;starte den Assistenten und warte (oder nicht ?)
;return ShellExecute 0, "open", $UdlFile, vbNullString, vbNullString, SW_SHOWNORMAL=1
return ShellExecuteWait($UdlFile, '', $UdlFile, 'open', 1)
EndFuncFunc GetConnectionObj($UDLfile)
[/autoit]
; liefert ein ConnectObj aus UDL-Datei oder -1 bei Fehler
Local $sqlCon
$sqlCon = ObjCreate("ADODB.Connection")
If IsObj($sqlCon) <> 1 Then
MsgBox(0, "Fehler", "Kein ADO-Objekt möglich!" )
Return -1 ; Fehler
EndIf
$sqlCon.ConnectionString = "File Name=" & $UDLfile & " ;"
$sqlCon.Open
; state connection 0 = N-OK, 1 = Ok, 2 = Connecting
if $sqlCon.State <> 1 Then
MsgBox(0, "Fehler", "Keine Connection-Verbindung möglich!" )
Return -1 ; Fehler
EndIf
Return $sqlCon
EndFunc
Gruß Schumi -
Hallo UEZ,
es funktioniert super.
Vielen vielen Dank.Gruß Schumi
-
Hallo zusammen,
ich habe mal wieder eine Frage und hoffe auf eure Hilfe.
Hier im Beisp. erstelle ich ein Bildobjekt von einem Win.-Fenster. (Das glaube ich zumindest
)
Im Beisp. mache ich das über den Umweg einer PNG-Datei.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ScreenCapture.au3>
#Include <String.au3>
#include <File.au3>
#Include <WinAPI.au3>
#Include <GDIPlus.au3>$File = "C:\BilddateiTest.png"
[/autoit] [autoit][/autoit] [autoit]Run("notepad.exe")
[/autoit] [autoit][/autoit] [autoit]
WinWait("[CLASS:Notepad]", "")
$handle = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")If @error Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(4096, "Fehler ...", "Das richtige Fenster konnte nicht gefunden werden")
Exit
Else
; MsgBox(0, "i.O.", "alles iO.")
EndIf; Erstellt eine Bilddatei von einem Fenster
[/autoit] [autoit][/autoit] [autoit]
_ScreenCapture_CaptureWnd ($File, $handle)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
; Lade das Bild aus der Datei
$hBitmap = _GDIPlus_ImageLoadFromFile ($File)$y = _GDIPlus_ImageGetHeight ($hBitmap)
[/autoit] [autoit][/autoit] [autoit]
$x = _GDIPlus_ImageGetWidth ($hBitmap)MsgBox(0,"Fenstergröße","X ist:" & $x & " Y ist:" & $y)
[/autoit] [autoit][/autoit] [autoit][/autoit]
; ...und so weiter
; ...und so weiter
_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_Shutdown()
Meine Frage ist jetzt:
Wie kann ich mir das Speichern der Bilddatei sparen und gleich zu dem Bildobjekt kommen?
Vielen Dank.Gruß Schumi
-
Hallo,
sorry hat etwas gedauert.
Vielen Dank für den Tipp aber leider hat nichts funktioniert.Gruß Schumi
-
Hallo,
also ich denke es geht nicht.
Ich habe einiges getestet und -wie vermutet- ich konnte nichts übergeben, werder eine bestimmte Zahl noch Text.Danke für das Interesse.
Gruß Schumi -
Hallo Bugfix,
Shell ist nur ein Beispiel für eine andere Anwendung bzw. Script.
Was habe ich vor:
In einer externen Eigenentwicklung (auch so eine Art Script) brauche ich noch ein paar Funktionen.
Ich kann in diesem "externen" Script diese Funktionen leider nicht einfügen.
Ich habe aber die Möglichkeit eine Art ShellExecuteWait aufzurufen.Nun ist meine Idee:
An den entsprechenden Stellen rufe ich "MyScript.exe" mit meinen Funktionen auf und komme so an die Funktionsergebnisse.
Also von hinten durch die Brust ins Auge...Ja, und wenn das so geht wäre das die Lösung...so der Plan. Ein script habe noch nicht... weil kein Plan..
Im Script hätte ich es so versucht:Exit("MyScript war hier")
Aber vielleicht kann man auch was über die "parameters" machen? i.s. von ShellExecuteWait ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
Ich hatte so etwas noch nicht, also keine Ahnung. Ich fürchte nur das geht alles nicht.. weil nicht vorgesehen ..oder doch?Gruß Schumi
-
Hallo zusammen,
wie mache ich das damit ein Script einen StringWert über einen Shellaufruf zurückgeben kann?
Ich tippe mal es handelt sich um den Return Code von Exit.
Lt. Hilfe sind aber nur INT-Werte möglich.Hat jemand noch eine Idee?
Gruß Schumi
-
Hallo,
recht herzlichen Dank für den Tipp.
Mein erster Test war leider ohne Erfolg. Ich habe alle Namen duchgetestet. Das Gleiche auch mit #Include <SendMessage.au3>. Lt. Hilfe gehört die ja dazu, oder?
Der Link ist auch interessant. Das teste ich auch noch und melde mich dann wieder.Vielen Dank.
Gruß Schumi -
Hallo,
es ist eine Art Terminal-Programm. Man arbeitet also an einem Großrechner und das Terminalfenster ist in eine GUI verpackt.
Man kann also nicht mal eben bei sich auf dem heimischen PC das Zeug installieren und testen.
Wäre aber toll wenn ich weitere Lösungsansätze zum Testen bekomme.Bisher habe ich das hier versucht.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Include <Array.au3>
Local $i
Local $WinFenster = "Basissystem"
Local $Text = WinGetClassList($WinFenster)
$Text = StringSplit($Text,@lf)Local $Classliste1[UBound($Text)][2]
[/autoit] [autoit][/autoit] [autoit]
Local $Classliste2[UBound($Text)][2]For $i = 0 To UBound($Text) - 1
[/autoit]
$Classliste1[$i][0] = $Text[$i]
$Classliste1[$i][1] = ControlGetText("[Class:MaxMainForm]","","[CLASS:" & $Text[$i] & "; INSTANCE:1]")
$Classliste2[$i][0] = $Text[$i]
$Classliste2[$i][1] = ControlGetText("[Class:MaxMainForm]","","[CLASS:TRzStatusBar]")
Next
; Inhalte anzeigen
_ArrayDisplay($Classliste1, " mit INSTANCE:1")
_ArrayDisplay($Classliste2, " ohne ")
Das hat aber nichts gebracht.
Was könnte ich noch testen?Gruß Schumi
-
Hallo zusammen,
ich suche noch immer nach einer Möglichkeit eine Statusbar auszulesen, wie ich hier
geschrieben habe. Ich könnte mir damit viel Arbeit ersparen.Und genau dafür suche ich Hile.
Kann mir dabei jemand helfen?Gruß Schumi
-
Ich hab's doch noch gefunden..
Code
Alles anzeigenSo geht es ... (VBA) Set Comm = CreateObject("ADODB.Command") With Comm .ActiveConnection = ConnectString .CommandText = " Update Table set Feldname = 'Neuer Wert' Output Inserted.Feldname " .CommandType = 1 Set Recordset = .Execute End With Rueckgabewert = Recordset.Fields("Feldname").ValueGruß Schumi
-
Hallo zusammen,
M$ beschreibt hier:
"Im folgenden Beispiel wird die OUTPUT-Klausel in einer DELETE-Anweisung verwendet, um die gelöschte Zeile an die aufrufende Anwendung zurückzugeben."USE AdventureWorks2012;
GO
DELETE TOP(1) dbo.DatabaseLog WITH (READPAST)
OUTPUT deleted.*
WHERE DatabaseLogID = 7;
GOUnd genau das bekomme ich nicht hin - mit Update und Inserted.
Wie bekomme ich einen Rückgabewert?
Hat einer eine Idee, Bsp. oder Link für mich?Vielen Dank vorab.
Gruß Schumi -
Hallo,
noch eine Frage dazu:
Kann man mit _Memory die richtige Class finden und dann die Statusbar auslesen?Gruß Schumi
-
Hallo,
als Regex ich hätte es so versucht \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|(?<=\[)\d{1,7}(?=\])
(keine Ahnung ob der Port 7 Stellen haben kann, evtl anpassen)Beschreibungen findest du in der Hilfe und hier:
https://autoit.de/index.php?page=Thread&threadID=19071Ein kleines Tool zum Testen findest du hier:
http://n2b.ch/2011/01/22/autoit-regexp-tester-utility/Gruß Schumi
-
Hallo,
..mit ControlGetText klappt es nicht..
Gruß Schumi
-
Hallo zusammen,
jede Statusbar kann man ja nicht auslesen. Nur zur Sicherheit die Frage.
Hat es jemand evtl. mit dieser Class geschafft?Ich versuche diese Statusbar auszulesen und bekomme es nicht hin.
Mal wird hier eine Prozessbar und mal ein Text gezeigt. Und ich brauche den Text.>>>> Window <<<<
Title: MAX - system
Class: MaxMainForm
Position: 0, 0
Size: 1024, 738
Style: 0x16CF0000
ExStyle: 0x00050100
Handle: 0x000B01BC>>>> Control <<<<
Class: TRzStatusBar
Instance: 1
ClassnameNN: TRzStatusBar1
Name:
Advanced (Class): [CLASS:TRzStatusBar; INSTANCE:1]
ID: 459452
Text:
Position: 24, 670
Size: 989, 19
ControlClick Coords: 358, 8
Style: 0x56000000
ExStyle: 0x00010000
Handle: 0x000802BCHat einer eine Idee?
Gruß Schumi
-
Hallo Andy,
so richtig hat dein Tipp bei mir nicht funktioniert.Dafür konnte ich das hier testen und das funktioniert.
[autoit]
[/autoit][autoit][/autoit][autoit]
$sqlCon = ObjCreate("ADODB.Connection")
$sqlCon.Open ("DSN=MeineVerbindung;Uid=sa;Pwd=xxx") ; mit User und PW; oder (ungetestet)
[/autoit][autoit][/autoit][autoit][/autoit]
; $sqlCon.Open ("DSN=MeineVerbindung") ; mit NT AuthentifizierungDanke für den Versuch.
Gruß Schumi -
Hallo Andy,
vielen Dank für die Info. Das sieht alles sehr "spannend" aus...
Ich teste das mal.Besten Dank.
Gruß Schumi