Beiträge von Jescho
-
-
-
-
Hallo zusammen,
leider kann ich ein Fenster (Fehlermeldung) nicht vernünftig ansprechen. Nach etwas Recherche habe ich herausgefunden das das Handle von der Func WinGetHandle nicht komplett ausgegeben wird. Oder was mache ich falsch?
Wenn ich folgenden Code ausführe erhalte ich folgende Angaben in der Console
Spoiler anzeigen
#include <WinAPI.au3>
Dim $hWindowTitel = 'Ressourcensteuerung'
Dim $hWindowClass = 'classname=SunAwtDialog'
Dim $sHandleTitel = WinGetHandle($hWindowTitel)
Dim $sHandleClass = WinGetHandle($hWindowClass)
ConsoleWrite('Handle von ' & $hWindowTitel & ' : ' & $sHandleTitel & @LF)
ConsoleWrite('Handle von ' & $hWindowClass & ' : ' & $sHandleClass & @LF)
Ich arbeite mit der AutoIt-Version 3.3.12.0
-
8 Jahre schon hier, alter Schwede. Ne aber mal im Ernst, Leute - nicht so aufschäumen. Ein netter Umgangston hat noch keiner Diskussion geschadet.
Erstmal, mir ist super geholfen wurden, wie immer! Durch den Denkanstoß konnte ich meinen Code anpassen, so dass er jetzt das macht was ich wollte.
Es liegt doch in der Natur der Dinge, dass es nicht nur einen Weg nach Rom gibt, also auch hier.
Für den Lerneffekt ist es doch gut weitere Ansätze zu bekommen, außerdem kommt man dann sogar noch tiefer in das Thema.
Warum habe ich mich an die Mathematiker gewannt, weil es meiner Meinung nach eine Mathematische Formel ist, die zur Lösung meines Problems von Nöten war.
Und wenn ich jetzt in der Hilfe lese Modulo-Rechnung, Dividend und Divisor dann sind das doch Mathematische Aspekte, oder?Also zu Abschluss, danke für die Hilfe von allen!
-
ok wieder etwas dazu gelernt. Danke
-
Hey danke, das funzt.
Jedoch verstehe ich es noch nicht ganz.
Und zwar der mittlere Teil erschließt sich mir noch nicht ganz.
Das Mod ist eine Division, soweit klar. Aber was ist mit dem Fragezeichen und dann nochmal Mod wieso???
Ich würde das gern nachvolziehen können um etwas dazuzulernen, und beim nächsten mal nicht wieder fragen zu müssen. -
Hallo zusammen,
ich habe mir eine Abfrage zusammengeschrieben, die soweit auch erstmal funzt. Jedoch ist der Code ziemlich lang, und ich denke da ist noch potenziel.
Beim durchlaufen einer For - Next Schleife würde ich gern durch eine Formel folgende Zähler umsetzen
Durchlauf von $i von 1 bis 120,
dann als Zweiten Zähler immer 1 bis 4
und als dritten Zähler nach jeder 4 Gruppe eins weiterFürs Verständnis eine kleines Zahlenbeispiel
1 | 1 | 2
2 | 2 | 2
3 | 3 | 2
4 | 4 | 2
5 | 1 | 3
6 | 2 | 3
7 | 3 | 3
8 | 4 | 3
9 | 1 | 4
10 | 2 | 4
11 | 3 | 4
12 | 4 | 4
13 | 1 | 5
14 | 2 | 5
15 | 3 | 5
16 | 4 | 5so sieht der Code bis jetzt aus
Spoiler anzeigen
Code
Alles anzeigen;Uebertragen der Daten For $i = 0 To UBound($aArray) - 1 ;~ ConsoleWrite(@ScriptLineNumber & '$i = ' & $i & @LF) If $aArray[$i][0] <> '' And StringRegExpReplace($aArray[$i][0], '\H+, \H+', '') = '' Then ;Mitarbeiter uebertragen _ArrayAdd($aDaten, $aArray[$i][0]) ;erste Tag ;erste Schicht uebertragen $aDaten[UBound($aDaten) - 1][1] = $aArray[$i][2] ;zweite Schicht uebertragen $aDaten[UBound($aDaten) - 1][2] = $aArray[$i+1][2] ;dritte Schicht uebertragen $aDaten[UBound($aDaten) - 1][3] = $aArray[$i+2][2] ;vierte Schicht uebertragen $aDaten[UBound($aDaten) - 1][4] = $aArray[$i+3][2] ;zweite Tag ;erste Schicht uebertragen $aDaten[UBound($aDaten) - 1][5] = $aArray[$i][3] ;zweite Schicht uebertragen $aDaten[UBound($aDaten) - 1][6] = $aArray[$i+1][3] ;dritte Schicht uebertragen $aDaten[UBound($aDaten) - 1][7] = $aArray[$i+2][3] ;vierte Schicht uebertragen $aDaten[UBound($aDaten) - 1][8] = $aArray[$i+3][3] ;dritte Tag ;erste Schicht uebertragen $aDaten[UBound($aDaten) - 1][9] = $aArray[$i][4] ;zweite Schicht uebertragen $aDaten[UBound($aDaten) - 1][10] = $aArray[$i+1][4] ;dritte Schicht uebertragen $aDaten[UBound($aDaten) - 1][11] = $aArray[$i+2][4] ;vierte Schicht uebertragen $aDaten[UBound($aDaten) - 1][12] = $aArray[$i+3][4] ;vierte Tag ;erste Schicht uebertragen $aDaten[UBound($aDaten) - 1][13] = $aArray[$i][5] ;zweite Schicht uebertragen $aDaten[UBound($aDaten) - 1][14] = $aArray[$i+1][5] ;dritte Schicht uebertragen $aDaten[UBound($aDaten) - 1][15] = $aArray[$i+2][5] ;vierte Schicht uebertragen $aDaten[UBound($aDaten) - 1][16] = $aArray[$i+3][5] EndIf Next _ArrayDisplay($aDaten)
ich hatte zwar schon mal eine entsprechende Formel hier im Forum gesehen, kann sie leider aber nicht mehr finden und das beim selbst zusammenbauen bin ich bis jetzt leider kläglich gescheitert.Wie kann man eine solche Anforderung am besten umsetzen?
Für Denkanstöße wäre ich sehr dankbar.Viele Grüße Jens
-
also Lotus Notes wird noch von einigen Firmen genutzt. So zum Beispiel bei der Deutschen Bahn und auch bei Banken habe ich es schon gesehen.
wenn es etwas zum testen gibt oder ich dir sonst irgendwie helfen kann, gerne einmal melden.
Viele Grüße Jescho
-
also ich würde es sehr begrüßen und auch nach meinen Möglichkeiten auch unterstützen.
Grüße Jens
-
Hallo Ricardo,
das hört sich ja echt interessant an. Ich habe meine Aktionen in Lotus Notes bisher nur durch Senden von Tastenkombinationen hinbekommen.
Mal sehen ob ich da etwas umstellen kann. Im Moment bin ich nur zu stark in andere Projekte eingebunden. Sollte ich auf Probleme stoßen werde ich mich melden.
Allen ein Frohes Fest
Grüße Jens
-
Respekt, das funzt. Ich frage mich wie man so etwas hin bekommt?
Aber das du die Fehlerbehandlung rausgelassen hast, finde ich schade.
Leider habe ich nicht die Kenntnisse so etwas selbst zu erstellen.Mit einer entsprechenden Anleitung würde ich das ja gern selbst einmal versuchen.
Grüße Jens
-
Ok, Danke da hab ich doch gleich wieder etwas dazu gelernt.
-
Das habe ich gleich mal ausprobiert. Funzt super.
Bisher kannte ich jedoch die Möglichkeit als Verbindungoperatoren ein ? oder auch das : nicht. Oder wie muss ich diese Zeichen deuten?
$sFile = ($sFileExt <> '') ? StringLeft($sFileExt, StringInStr($sFileExt, '.', 0, -1) -1) : ''
Was kann man damit machen? Leider ergibt sich mir auch nicht ganz der Sinn.
-
Super Einstieg, soetwas suche ich schon seit längerem. Danke
Was mir jedoch aufgefallen ist, bei dem Feld Eingabe ist das % wohl der Func StringFormat geschuldet. Ist es nicht auch möglich, das Script dahingehend umzubauen, dass man statt dessen den Standard Platzhalter * nahmen kann. Oder wolltest du dass bewust nicht, da im SQL-String ja auch * vorkommen?
Interessant währe auch noch eine ListviewAnsicht, aber das werde ich mal bei Gelegehei versuche selbst umzusetzen.
bis dann
Jescho
-
Hallo, lieder besteht der Fehler bei mir immer noch. Ich habe es mit deinem Bsp. probiert, das selbe Ergebnis.
warum es mit dem Bild nicht gefunzt hat ??? Aber hier noch einmal ein Abbild.
Ich habe es jetzt mal als Dateianhang hinzufügt.
ie macht ihr denn das mit dem URL-Link um Bilder direkt darzustellen? Geht das wirklich nur über Webspace?
-
-
na da schließe ich mich doch gerne an. Alles Gute auch von mir. let's
-
water ja das ist richtig. Nachdem ich im Taskmanager den Excel-Prozess geschlossen habe, kommt als Rückgabe von _FileCopyToLocal auch wieder der Dateipath.
Bleibt die Frage wie ich das Objekt sauber beende.
Wer kann helfen?
-
Hallo zusammen,
ich möchte gern eine Excel-Datei(2010 mit Macros) die auf einem Server liegt und in unregelmäßigen Abständen aktualiesiert wird, zur Ansicht auf einem lokalen Rechner starten.
Da das ausführen der Excel-Datei auf dem Server ausfällt(da sie als geöffnette Datei nicht mehr aktualiesiert werden kann) erstelle ich als erstes eine lokale Kopie.
Dann starte ich die Datei als Embedded, was auch schon funktioniert. Dann möchte ich das auf dem Button unten in der Mitte die Excel-Datei aktualiesiert wird. Hier mein bisheriges Werk(ja teilweise auch zusammenkopiert)
[autoit]#include <GUIConstantsEx.au3>
[/autoit]
#include <WindowsConstants.au3>
;~ Local $sSource = 'xxxx'; life Serverpath
Local $sSource = 'D:\Test\Test.xlsm'; test Lokal
Local $sWorkDir = 'D:\Temp'
$sWorkFile = _FileCopyToLocal($sSource, $sWorkDir); erstellen einer lokalen Kopie
Local $Obj1 = ObjGet($sWorkFile)
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Abbruchfehler', 'Excel-Objekt konnte nicht erstellt werden.')
GUICreate('Embedded Excel', @DesktopWidth / 1, @DesktopHeight / 1.1, -1, -1, $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX + $WS_SYSMENU + $WS_CLIPCHILDREN)
$GUI_ObjExcel = GUICtrlCreateObj($Obj1, 0, 52, @DesktopWidth - 5, @DesktopHeight - 175); die 52 steht für die Höhe der Ribbonbar
Local $btnRefresh = GUICtrlCreateButton('Neu laden', @DesktopWidth / 2 - 75, @DesktopHeight / 1.1725, 150)
; Alle Befehlsschaltflächen deaktivieren:
;~ For $Bar In $Obj1.CommandBars
;~ If $Bar.Enabled = True Then $Bar.Enabled = False
;~ If $Bar.Visible = True Then $Bar.Visible = False
;~ Next
$Obj1.Application.DisplayFormulaBar = False
$Obj1.Application.CommandBars("Shadow Settings").Visible = False
$Obj1.Application.DisplayScrollBars = True
$Obj1.Application.DisplayStatusBar = False
;~ GUISetState(@SW_SHOW)
GUISetState(@SW_MAXIMIZE)
While 1
Switch GUIGetMsg()
Case $btnRefresh
;~ MsgBox(0,'','Jetzt wird das ExelWorkbook neu geladen', 2); nur zur info
$Obj1.Close; Exceldokument schließen
$work = _FileCopyToLocal($sSource, 'D:\Temp'); aktuelles File vom Server ziehen
$Obj1 = ObjGet($work); Objekt referenzieren
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
GUISetState(@SW_SHOW)
Case $GUI_EVENT_CLOSE
$Obj1.Close
Exit
EndSwitch
GUIDelete()
WEnd
;~ #ce
Func _FileCopyToLocal($strFileFullPath, $strDirDestination)
Dim $arrString, $strFile
If FileExists($strFileFullPath) Then
$arrString = StringSplit($strFileFullPath, '\')
$strFile = $arrString[$arrString[0]]
If FileCopy($strFileFullPath, $strDirDestination & '\' & $strFile, 9) = 0 Then
SetError(0, 1)
Else
Return $strDirDestination & '\' & $strFile
EndIf
EndIf
EndFunc;==>_FileCopyToLocalSo jetzt zu meinen Problemen:
- das aktualiesieren funzt noch garnicht
- was noch schlimmer ist, das Objekt scheint nicht richtig geschlossen zu werden. Beim ersten Start geht es noch, danach benötigt es ewig zum Starten, und beim runterfahren des Rechners bekomme ich hinweismaldungen das es noch geöffnette Excel-Dateien gibt.
Ich gebe bald auf.