Hallo zusammen,
gibt es eine Möglichkeit, Scrollbalken in zB einem Edit-Feld nur anzeigen zu lassen, sobald das Fenster zu klein wird?
Hallo zusammen,
gibt es eine Möglichkeit, Scrollbalken in zB einem Edit-Feld nur anzeigen zu lassen, sobald das Fenster zu klein wird?
ich hatte erst ne ini verwendet, bin dann aber auf ne sql-db umgestiegen.
das sind nicht die einzigen werte, die geplfegt werden, wobei das noch nicht mal der grund war.
die genaue zuordnung über die ROWID hat mich die sql-db nehmen lassen. in der ini müsste ich die zuordnung selber einbauen, oder über den namen gehen, was aber ungenau ist, falls der fall auftreten sollte, dass dieser 2 mal vorhanden ist.
habe noch nicht angefangen, für das tray menü was zu coden, da ich ja erst wissen muss, wie ich es überhaupt machen will.
meine idee bis jetzt ist, ich lese die benannten daten aus der db und schreibe die in ein array. ich erstelle ein neues array in die ich jeweils die dateiendungen reinschreibe und lösche dort doppelte einträge.
dann erstelle ich für dieses array je einen menüeintrag im tray und füge dann die namen der pfade ein.
scheint mir halt nur nicht der optimalste weg zu sein.
Hiho,
ich habe eine Idee, aber ich weiss einfach nicht, wie ich das am sinnvollsten/ effektivsten umsetzen soll.
ich habe eine Datenbank mit Namen und Pfaden, die ich per SQL-Befehl auslese.
Dann möchte ich daraus ein varibables Tray-Menü erstellen, ein Menü pro Dateiendung, in dem dann die Namen als Item angezeigt werden.
Bsp:
Exe ->mIRC
Excel
miranda
xls ->Daten
Rechnung
jpg ->Freundin
Geliebte
Oma
cmd ->admin
jmd ne Idee, wie man das am einfachsten/ sinnvollsten umsetzen kann?
Das Menü müsste auch im laufenden Prozess teilweise neu generiert werden, wenn Einträge in der DB dazukommen.
schonmal vielen Dank für Denkanstöße und/oder Code.
quasi so, oder gehts noch anders?
DllCall("Kernel32.dll", "int", "SetCurrentDirectory", "str", @ScriptDir)
Hallo,
mir ist etwas aufgefallen, was ich nicht ganz verstehe.
ich habe ein programm, dass, wenn es beim start eine a.ini findet, msgbox A anzeigt, sonst msgbox B.
ich starte die datei ganz normal aus dem explorer und die a.ini existiert im selben dir, msgbox A wird (richtigerweise) angezeigt.
ich lege eine verknüpfung des tools im schnellstart an und starte das tool über die verknüpfung, es wird msgbox B angezeigt (da die ini, die da ist, wohl nicht gefunden wurde).
womit hängt das zusammen? irgendwas mit @workingdir? was muss ich machen, dass beide versionen funktionieren?
Hallo,
ich möchte in einem mehrspaltrigen Listview, das eine Spalte nur **** anstatt Text anzeigt, da dort Passwörter eingetragen werden.
Ist das möglich und wenn ja, wie?
wenn ich iecreate mache, erstellt ja er immer ein neues fenster. ab ie7 werden ja tabs unterstützt, also soll er die seiten in neuen tabs, anstatt neuen ie-instanzen öffnen.
Hiho,
gibt es schon IE/FF-Funcs, um seiten in Tabs zu öffnen ?
Hiho,
ich habe ein Script geschrieben, was bis vor wenigen Wochen noch ohne Probleme lief.
Das script soll nach dem Startvorgang automatisch 1-n Programme öffnen ... was es aber nicht mehr macht.
Es gibt jedoch auch die Möglichkeit, die Routine für jedes Tool nochmal über das TrayMenü anzustoßen .. was funktioniert.
Wenn ich das script aus dem Editor starte, bricht es zwar nicht ab, aber es kommt auch nicht bis zur prüfung, wo es entscheiden soll, starten oder nicht starten.
Im fenster erscheint dann dies:
[autoit]>Running:(3.3.0.0):C:\Program Files\AutoIt3\autoit3.exe "C:\Program Files\Henkel S.T.A.R.T.E.R\S.T.A.R.T.E.R.au3"
KILL
was hat das zu bedeuten? im code kommt 1 x das wort Kill vor (WinKill("[CLASS:IEFrame; INSTANCE:1]")) was aber auch aus dem code entfernt werden kann. die meldung kommt trotzdem.
Hiho,
ich würde gerne ein txt file auf mehrere aufeinanderfolgende leerzeilen durchsuchen und alle leerzeilen bis auf 1 löschen.
leider komm ich damit nicht ganz zurecht. also prüfung pro leerzeile und löschung ist ok, aber auf mehrere komme ich nicht ganz klar.
For $i = 1 To $arFile[0]
If FileReadLine(@UserProfileDir & "\map.cmd", $i) = "" Then _FileWriteToLine(@UserProfileDir & "\map.cmd", $i, "", 1)
Next
hmm ok, dann werd ich es so machen müssen, dank dir für deine hilfe =)
danke, die idee ist gut (funktioniert wahrscheinlich auch), aber in meinem fall leider doch wieder nicht =/
[autoit]--> IE.au3 V2.4-0 Warning from function _IEAttach, $_IEStatus_NoMatch
[/autoit]Das Handle findet er, aber irgendwie kann wiederum die IE-Func nicht darauf zugreifen oO
Hiho,
ich habe mal wieder ein kleines prob. beim pc-start auf der arbeit wird eine ie-instanz geöffnet, an der ich mich automatisch anmelden möchte. leider funktioniert _IEAttach nicht, da überhaupt keine IE-instanz gefunden wird (mit dem letzten bsp aus der hilfe getestet).
öffne ich manuell eine neue instanz mit der url, funktioniert _IEAttach auch.
Ich komme an das Fenster-Handle, wenn ich WinGetHandle benutze.
Wie bringe ich jetzt AutoIt dazu, dieses Handle auch mit den IE-Functions zu nutzen, um so user/pw eintragen zu lassen?
Hiho,
falls jmd sowas gebrauchen kann. hintergrund:
ich habe auf der arbeit nur eingeschränkte recht, jedoch auch einen admin user. hin und wieder brauche ich diesen, sei es als cmd, explorer oder um dateien zu installieren. leider geht zB. bei msi-dateien kein "rechtsklick - ausführen als" (dann muss ich die datei über cmd/explorer mit adminrechten starten).
dabei ist es nervig, immer das pw einzugeben.
jetzt läuft im systray dieses tool, mit dem man schnell die cmd, den explorer oder bestimmte dateien mit adminrechten starten kann. diese werden einmal eingegeben und dann gespeichert.
klein aber ... aber erfüllt meinen/seinen zweck =)
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=RunAsA.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Include <String.au3>
#include <Process.au3>
#include <array.au3>
Opt("TrayAutoPause",0) ;0=no pause, 1=Pause
Opt("TrayIconDebug", 0) ;0=no info, 1=debug line info
Opt("TrayIconHide", 0) ;0=show, 1=hide tray icon
Opt("TrayMenuMode",1) ;0=append, 1=no default menu, 2=no automatic check, 4=menuitemID not return
Opt("TrayOnEventMode",1) ;0=disable, 1=enable
Dim $data[2]
$key = "1234"
If Not FileExists("Settings.ini") Then
$User = InputBox("Admin", "Please enter the Admin-User ID", "", "", Default, 50)
If $User = "" Or @error Then Exit
$Pw = InputBox("Password", "Please enter the Admin-User PW", "", "*", Default, 50)
If $Pw = "" Or @error Then Exit
IniWrite("Settings.ini", "Data", "User", _StringEncrypt(1, $User, $key, 4))
IniWrite("Settings.ini", "Data", "Password", _StringEncrypt(1, $Pw, $key, 4))
EndIf
TrayCreateItem("Admin CMD")
TrayItemSetOnEvent(-1, "_CMD")
TrayCreateItem("Admin Explorer")
TrayItemSetOnEvent(-1, "_EXP")
TrayCreateItem("Run As Admin")
TrayItemSetOnEvent(-1, "_RunAs")
TrayCreateItem("")
TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
While 1
Sleep(100)
WEnd
Func _CMD()
_GetData()
RunAs($data[0], @ComputerName, $data[1], 0, @ComSpec, @SystemDir)
_ClearData()
EndFunc
Func _EXP()
_GetData()
RunAs($data[0], @ComputerName, $data[1], 0, "explorer.exe", @SystemDir)
_ClearData()
EndFunc
Func _RunAs()
$File = FileOpenDialog("File", @DesktopCommonDir, "Executables (*.exe;*.msi;*.bat;*.cmd)")
If Not $File = "" Or @error Then
$Split = _PathSplit1($File)
If Not @error Then
_GetData()
If $Split[7] = "msi" Then
FileDelete(@TempDir & "\runmsi.bat")
$sCmdFile = '@echo off' & @CRLF _
& '"' & $File & '"' & @CRLF _
& 'del ' & @TempDir & '\runmsi.bat'
FileWrite(@TempDir & "\runmsi.bat", $sCmdFile)
$File = @TempDir & "\runmsi.bat"
RunAs($data[0], @ComputerName, $data[1], 0, $File, @TempDir)
Exit
Else
RunAs($data[0], @ComputerName, $data[1], 0, $Split[5], $Split[2])
EndIf
EndIf
EndIf
_ClearData()
EndFunc
Func _GetData()
$data[0] = _StringEncrypt(0, IniRead(@ScriptDir & "\Settings.ini", "Data", "User", ""), $key, 4)
$data[1] = _StringEncrypt(0, IniRead(@ScriptDir & "\Settings.ini", "Data", "Password", ""), $key, 4)
Return $data
EndFunc
Func _ClearData()
Dim $data[2]
EndFunc
Func _Exit()
Exit
EndFunc
;===============================================================================
; Function Name: _PathSplit1()
; Description: Split the path to 8 elements.
; Parameter(s): $sPath - Path to split.
; Requirement(s): AutoIt 3.2.2.0.
; Return Value(s): On seccess - Array $RetArray that contain 8 elements:
; $RetArray[0] = Full path ($sPath)
; $RetArray[1] = Drive letter
; $RetArray[2] = Path without FileName and extension
; $RetArray[3] = Full path without File Extension
; $RetArray[4] = Full path without drive letter
; $RetArray[5] = FileName and extension
; $RetArray[6] = Just Filename
; $RetArray[7] = Just Extension of a file
;
; On failure - If $sPath not include correct path (the path is not splitable),
; then $sPath returned.
; If $sPath not include needed delimiters, or it's emty,
; then @error set to 1, and returned -1.
;
; Note(s): The path can include backslash as well (exmp: C:/test/test.zip).
;
; Author(s): G.Sandler a.k.a CreatoR (MsCreatoR) - Thanks to amel27 for help with RegExp
;===============================================================================
Func _PathSplit1($sPath)
If $sPath = "" Or StringRegExp($sPath, ('.*\\.*\/')) Then Return SetError(1, 0, -1)
Local $RetArray[8], $pDelim = ""
If StringRegExp($sPath, '^(?i)([A-Z]:|\\)(\\[^\\]+)+$') Then $pDelim = "\"
If StringRegExp($sPath, '(?i)(^.*:/)(/[^/]+)+$') Then $pDelim = "//"
If $pDelim = "" Then $pDelim = "/"
If Not StringInStr($sPath, $pDelim) Then Return $sPath
If $pDelim = "\" Then $pDelim &= "\"
$RetArray[0] = $sPath
$RetArray[1] = StringRegExpReplace($sPath, $pDelim & '.*', $pDelim)
$RetArray[2] = StringRegExpReplace($sPath, $pDelim & '[^' & $pDelim & ']*$', '')
$RetArray[3] = StringRegExpReplace($sPath, '\.[^.]*$', '')
$RetArray[4] = StringRegExpReplace($sPath, '(?i)([A-Z]:' & $pDelim & ')', '')
$RetArray[5] = StringRegExpReplace($sPath, '^.*' & $pDelim, '')
$RetArray[6] = StringRegExpReplace($RetArray[5], '\.[^.]*$', '')
$RetArray[7] = StringRegExpReplace($sPath, '^.*\.', '')
Return $RetArray
EndFunc ;==>_PathSplit1
geschafft ...
bei msi sollte wohl bei RunAs der ganze Pfad, anstatt nur das File stehen.
so geht es auf jeden Fall:
[autoit]Func _RunAs()
$File = FileOpenDialog("File", @DesktopCommonDir, "Executables (*.exe;*.msi;*.bat;*.cmd)")
If Not $File = "" Or @error Then
$Split = _PathSplit1($File)
If Not @error Then
_GetData()
If $Split[7] = "msi" Then
FileDelete(@TempDir & "\runmsi.bat")
$sCmdFile = '@echo off' & @CRLF _
& '"' & $File & '"' & @CRLF _
& 'del ' & @TempDir & '\runmsi.bat'
FileWrite(@TempDir & "\runmsi.bat", $sCmdFile)
$File = @TempDir & "\runmsi.bat"
RunAs($data[0], @ComputerName, $data[1], 0, $File, @TempDir)
Exit
Else
RunAs($data[0], @ComputerName, $data[1], 0, $Split[5], $Split[2])
EndIf
EndIf
EndIf
_ClearData()
EndFunc
nee, das ist es nicht, es ist komisch.
hier mal das ganze script:
[autoit]Func _RunAs()
$File = FileOpenDialog("File", @DesktopCommonDir, "Executables (*.exe;*.msi;*.bat;*.cmd)")
If Not $File = "" Or @error Then
$Split = _PathSplit1($File)
If Not @error Then
If $Split[7] = "msi" Then
FileDelete(@TempDir & "\runmsi.bat")
$sCmdFile = '@echo off' & @CRLF _
& '"' & $File & '"' & @CRLF _
& 'del ' & @TempDir & '\runmsi.bat'
FileWrite(@TempDir & "\runmsi.bat", $sCmdFile)
$File = @TempDir & "\runmsi.bat"
EndIf
$Split = _PathSplit1($File)
If Not @error Then
_GetData()
$r = RunAs($data[0], @ComputerName, $data[1], 0, $Split[5], $Split[2])
MsgBox(0, $r & @CRLF & @error, $data[0] & @CRLF & $data[1] & @CRLF & $Split[5] & @CRLF & $Split[2])
EndIf
EndIf
EndIf
_ClearData()
EndFunc
ich habe es jetzt so umgeschrieben, das für msi-dateien eine bat erstellt wird und diese von der normalen routine ausgeführt wird.
die normale routine funktioniert bei exe, bat und cmd supi.
die msi-routine funktioniert aber auch im oben genannten bsp. nicht. die bat wird erstellt, aber runas gibt nen fehler zurück. führe ich aber die bat in der normaler routine per hand aus, funktioniert das auch. also syntay fehler gibt es wohl nicht, aber wo liegt der hund begraben???
FileDelete(@TempDir & "\runmsi.bat")
$sCmdFile = '@echo off' & @CRLF _
& '"' & $File & '"' & @CRLF _
& 'del ' & @TempDir & '\runmsi.bat'
FileWrite(@TempDir & "\runmsi.bat", $sCmdFile)
RunAs($data[0], @ComputerName, $data[1], 0, "runmsi.bat", @TempDir)
Hallo, habe es jetzt mal so probiert.
wenn ich die batch datei mit admin-cmd ausführe, funzt das ... leider funktioniert hier der runas befehl iwie nicht, wobei ich nicht weiss, wieso?
ein anderer teil des tools sieht so aus und geht:
[autoit]RunAs($data[0], @ComputerName, $data[1], 0, @ComSpec, @SystemDir)
[/autoit]das sollte heißen, dass nix passiert.
bei deinem code passiert zwar was, aber leider immer die meldung, dass das installationspaket nicht geöffnet werden konnte.
also hilft mir das leider auch nicht ganz weiter, denn wenn ich die datei mit ner admin-cmd ausführe, gehts (also msi-datei ist nicht defekt, habe auch mehrere probiert).