Ah sorry hatte ihn nur noch mal überflogen weil ich nen Tag vorher in den Thread geschaut hatte und derweil die API gefunden hatte. Die Funktion DriveGetType ist wahrscheinlich mit der dll erstellt.
Beiträge von Flarkus
-
-
Hallo
[autoit]
Du meinst sicherlich mehrdimensionale Arrays. Bei Dir würde ein 2dimensionales reichen. Dies sieht ungefähr so aus.Dim $array[10][2]
[/autoit]
Damit hast du 2 Spalten (Spalte 0 und 1) und 10 Zeilen (Zeile 0-9)weil das Array null basiert ist.
Gruß Ralf -
Perfekt
danke DIr funkey. es ist genau das was ich gesucht hab.
Gruß Ralf -
Hallo
Da ich leider mit den dll-aufruf noch nicht klar komme hier nur der Text den ich gefunden hab. Vielleicht können ja die Profis damit etwas anfangen. (gefunden in einer Windows API)
Description
The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
Declaration
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Parameters
· lpRootPathName
Points to a null-terminated string that specifies the root directory of the disk to return information about. If lpRootPathName is NULL, the function uses the root of the current directory.ReturnValue
The return value specifies the type of drive. It can be one of the following values:
DRIVE_UNKNOWN
The drive type cannot be determined.DRIVE_NO_ROOT_DIR
The root directory does not exist.DRIVE_REMOVABLE
The disk can be removed from the drive.DRIVE_FIXED
The disk cannot be removed from the drive.DRIVE_REMOTE
The drive is a remote (network) drive.DRIVE_CDROM
The drive is a CD-ROM drive.DRIVE_RAMDISK
The drive is a RAM disk.Aufruf in C
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Set the graphic mode to persistent
Me.AutoRedraw = True
'Get information about the C:\
Select Case GetDriveType("C:\")
Case 2
Me.Print "Removable"
Case 3
Me.Print "Drive Fixed"
Case Is = 4
Me.Print "Remote"
Case Is = 5
Me.Print "Cd-Rom"
Case Is = 6
Me.Print "Ram disk"
Case Else
Me.Print "Unrecognized"
End Select
End SubGruß Ralf
-
Danke Dir Elodie
Das geht zwar in die richtige Richtung nur wollte ich den ganzen Tab einfärben und nicht nur den Karteireiter oben. Werde bei Gelegenheit mir die Funktion mal genauer ansehen.
Bis dann
Gruß Ralf -
Hallo
habe ka Ahnung wie man die Hintergrundfarbe eines TabItems ändert. Es geht leider nicht mit der Funktion GUICtrlSetBkColor oder GUICtrlSetDefBkColor. Vielleicht kann mir jemand einen Tip geben!
Gruß Ralf
-
Hallo
zum Start des Programms liest Du die Ini mit inireadsection in ein 2 dimensionales Array ein. Danach kannst du das Spiel laufen lassen. Wenn die Punktezahl feststeht liest du mittels For Schleife die Punkte aus und vergleichst die Größe. Ist sie Größer mußt Du den Alten Wert in einer Zwischenvariabel mit Schlüßel zwischenspeichern und den neuen Schlüßel mit Wert eintragen. Danach das gleiche mit dem nächsten Schlüßel und Wert. Alternativ das Array mit REDIM vergrößern und anschließend mit _Arraysort neu sortieren und die IndexPosition nach dem sortieren ist dann der Rang.
Gruß Ralf -
Hallo
Ich hatte mir mal die Funktion Filefind vorgenommen und geändert. Allerdings müßtest Du noch die Funktion auf Herz und Nieren Überprüfen und die SetError Funktion noch richtig einarbeiten.
[autoit]Func _Dateiliste( $sPath, $sFilter)
[/autoit][autoit][/autoit][autoit]
Local $arrFilter, $arrPfad[2], $i, $x, $z, $hSearch, $sFile, $asFileList[1][2];Überprüfung der Parameter
[/autoit][autoit][/autoit][autoit]
If Not FileExists($sPath) Then MsgBox( 0, "Fehler", "Ordner " & $spath & " existiert nicht! ");ob das Verzeichnis existiert
If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or _
(StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, = "") Then MsgBox( 0, "Fehler", "Fehler bei der Übergabe der Suchkriterien durch ein ungültiges Zeichen!") ;des Suchfilters auf ungültige Parameter
If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1) ;Wenn letztes Zeichen ein / ist wird es gelöscht benötigt für Win98 für x:\ root dir$arrFilter = StringSplit($sFilter, ';', 2)
[/autoit][autoit][/autoit][autoit]
$arrPfad[0] = 1
$arrPfad[1] = @ScriptDir & $sPath
$z = 1 ;Zählvariabel für Ordnerarray
$i = 1 ;Zählvariabel für DateiarrayDo
[/autoit][autoit][/autoit][autoit]
;Ordnersuche
$hSearch = FileFindFirstFile($arrPfad[$x] & "\*")
If $hSearch = -1 Then ;Return $asFileList;SetError(4, 4, "")
Else
Do
$sFile = FileFindNextFile($hSearch)
If $sFile = "" Then
Else
If StringInStr(FileGetAttrib($arrPfad[$x] & "\" & $sFile), "D") <> 0 Then
$z += 1
$arrPfad[0] = $z
if UBound ($arrPfad) = $arrPfad[0] Then ReDim $arrPfad[UBound($arrPfad) * 2]
$arrPfad[$z] = $arrPfad[$x] & "\" & $sFile
EndIf
EndIf
Until $sFile = ""
EndIf
FileClose($hSearch);Dateisuche
[/autoit]
For $element In $arrFilter
$hSearch = FileFindFirstFile($arrPfad[$x] & "\" & $element)
If $hSearch = -1 Then
Else
Do
$sFile = FileFindNextFile($hSearch)
If $sFile = "" Then
Else
$asFileList[0][0] += 1
If UBound($asFileList) <= $asFileList[0][0] Then ReDim $asFileList[UBound($asFileList) + 10][2]
$asFileList[$i][0] = $sFile
$asFileList[$i][1] = $arrPfad[$x]
$i += 1
EndIf
Until $sFile = ""
EndIf
Next
FileClose($hSearch)
$x += 1
Until $x = UBound($arrPfad) Or $arrPfad[$x] = ""
ReDim $arrPfad[$arrPfad[0] +1]
ReDim $asFileList[$asFileList[0][0] + 1] [2]
;~ _ArraySort($asFileList, 0)
Return $asFileList
EndFuncVielleicht kannst Du damit was anfangen.
Gruß Ralf
-
Hallo
Am besten Du erstellst 2 Array's. Ins erste liest Du die Dateien aus dem OpenFile ein und ins 2. mittels StringTrim nur die Dateinamen, die Du im ListView anzeigen kannst. Da die Dateien den selben Index haben, kannst Du darüber auf die Dateipfade zugreifen.
Gruß Ralf
P.s.: habe mir gerade den Rückgabewert des FileOpenDialogs angesehen.
Gibt den kompletten Pfad der ausgewählten Datei zurück. Rückgabe mehrerer Dateien wie folgt: "Verzeichnis|Datei1|Datei2|..."
Um im Listview nur die Dateien anzuzeigen brauchst Du nur mittels StringSplit die Rückgabe in ein Array einlesen und im Listview alle bis aufs erste eintragen. -
Hallo
Besuche mal bitte folgenden Thread: [ offen ] Ordner erstellen mit NTFS BerechtigungGruß Ralf
-
Hallo Elodie
habe mich jetzt mal um die Formel gekümmert.
Schrifthöhe in Pixel = Schriftgröße in Punkten* DPI \ 72
Woraus folgt
Schriftgröße in Punkten = Schrifthöhe in Pixel* 72 \ DPI$DPI = Regread("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
$Schrifthoehe = 14.666666 (bei einer Fonthoehe von 11 und einer Auflösung von 72 DPI)
$Schriftgroesse = $Schrifthoehe* 72 / $DPIGUISetFont($Schriftgroesse, "", "", "Arial",$gui)
Da Windows die $Schriftgroesse rundet müßtest du die Formel bei verschiedenen DPI-Einstellungen überprüfen. Bei 96 oder 120 DPI scheint es jedenfalls zu funktionieren.Gruß Ralf
-
Hallo Elodie
Aufgrund der Hinweise mit der DPI-Einstellung konnte ich Dein Problem nachvollziehen. Unter Regread("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","AppliesDPI") kannst Du die aktuelle DPI-Einstellung des Monitors auslesen. Je höher der Wert ist, desto größer dann auch die dargestellte Schrift.
Auf der Homepage http://www.eggheadcafe.com/conversation.aspx?messageid=32357478&threadid=32357456 findest Du einen Thread der das gleiche Problem unter VB behandelt. Ich hoffe der Link hilft Dir weiter.Gruß Ralf
-
Hallo
Bei mir stürzte das Programm kurz nach dem Start mit einer Fehlermeldung ab. Variable nicht deklariert bevor sie benutzt wird. Nachdem ich
#include WindowsConstants.au3
eingfügt hatte startete das Programm ganz normal.Gruß Ralf
-
Hallo
Es könnte ev. daran liegen das Du $GUI_DOCKALL verwendet hast. Wenn Du das Programm auf beiden Pc's startest und mit dem Autoit Windo Info Tool die Werte der Labels und Buttons überprüfst, siehst du unter Control welche Werte die Labels zugewiesen bekommen haben. Wenn es nicht weiterhilft dann poste mal den Code für das Fenster und die Labels dann kann ich mal einige Werte durchprobieren.
Gruß Ralf -
Hallo
wenn in der Combobox der komplette Pfad gespeichert ist brauchst du nur noch das selektierte Verzeichnis mit GUICtrlRead ( controlID ) auslesen.
Gruß Ralf -
Hallo
Shellexecute funktionierte, nur das Programm wurde unvollständig geladen. Habe heute auf Arbeit Zeit zum grübeln gehabt und jetzt weiß ich auch wozu "workingdir" ist. Nach dem ich Run(Pfad\cod4.exe, Pfad) eingegeben habe funktioniert der Aufruf. Auch mit Shellexecute und "workingdir" läßt es sich dann einwandfrei starten. Konnte ja nicht ahnen das "workingdir" so wichtig ist.
Gruß Ralf -
Danke für den fullscreen Befehl den hatte ich noch nicht.
falls jemand interesse an den Prog hat, habe erst angefangen es zu erstellen und die Befehle müßen auch noch getestet werden. Für Hilfe und Anregungen wäre ich jedenfalls dankbar. Wenn Interesse besteht werde ich mal den Code soweit er existiert hier posten.
mfg Ralf -
Danke für die Antwort
mit Shellexecute ging es leider nicht.
Nach dem ich da tagelang rumprobiert habe ist mir heute morgen eingefallen das Autoit ja eigentlich zur Steuerung von Programmen da ist. Jetzt habe ich anstatt über Run oder @comspec das Programm zu starten einfach über send die Befehle "von Hand" (in Windows Ausführen) eingefügt! Was soll ich sagen es funktioniert.
Manchmal sieht man halt den Wald vor lauter Bäumen nicht.
Gruß Ralf -
Hallo
habe angefangen ein Skript zu erstellen mit dem man einfacher (ohne die Call Of Duty4 Server Befehle zu kennen) die Einstellungen für einen Server ändern kann. Sprich Map-Auswahl, Spielmodi, Waffenauswahl e.c.. Der Cod4 Server startet zwar mit dem Aufruf über Run oder aus dem Dos-Fenster heraus, jedoch bricht der Start mit einer Fehlermeldung ab. (Win_improper_quit_body) Der selbe Fehler tritt auch mit VisualBasic auf. Nur wenn ich den Serveraufruf von Hand eingebe (Windows Shell oder Dos-Fenster) startet der Server korrekt. Vielleicht kann mir jemand helfen.
mfg Ralf -
Hallo
habe die Function _FileListToArray erweitert, um mehrere Suchkreterien gleichzeitig übergeben zu können und das zurückgegebene Array sortieren zu lassen. Nun hätte ich gern einige Meinungen dazu.
[autoit]
[/autoit][autoit][/autoit][autoit]
#Include
#IncludeDim $FileList
[/autoit][autoit][/autoit][autoit]Global $array
[/autoit][autoit][/autoit][autoit]
Func _Dateiliste($sPath, $sFilter = "*", $iFlag = 0, $arrsort = 2)
;Variabeln
Local $hSearch, $sFile, $asFileList[1], $x = 0, $array;Überprüfung ob das Verzeichnis existiert
[/autoit][autoit][/autoit][autoit]
If Not FileExists($sPath) Then Return SetError(1, 1, "");Überprüfung des Suchfilters auf üngültige Parameter
[/autoit][autoit][/autoit][autoit]
If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, = "") Then Return SetError(2, 2, "");Überprüfung ob auch Ordner oder nur nach Dateien gesucht werden soll
[/autoit][autoit][/autoit][autoit]
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "");Wenn letztes Zeichen ein / ist wird es gelöscht
[/autoit][autoit][/autoit][autoit]
If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1) ; needed for Win98 for x:\ root dir$array = StringSplit($sFilter, ';', 2)
[/autoit][autoit][/autoit][autoit]For $element In $array
[/autoit][autoit][/autoit][autoit]
;Dateisuche
$hSearch = FileFindFirstFile($sPath & "\" & $array[$x])
If $hSearch = -1 Then Return SetError(4, 4, "")Do
[/autoit][autoit][/autoit][autoit]
$sFile = FileFindNextFile($hSearch)
If $sFile = "" Then
Else
If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $array[$x]), "D") <> 0 Then ContinueLoop
If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $array[$x]), "D") = 0 Then ContinueLoop
$asFileList[0] += 1
If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
$asFileList[$asFileList[0]] = $sFile
EndIf
Until $sFile = ""$x = $x + 1
[/autoit][autoit][/autoit][autoit]
Next
FileClose($hSearch)
ReDim $asFileList[$asFileList[0] + 1] ; Trim unused slots
If $arrsort <> 2 Then _ArraySort($asFileList, $arrsort)
Return $asFileListEndFunc
[/autoit][autoit][/autoit][autoit]
$FileList = _Dateiliste("\Ordner", "*.txt;*.bmp", 0, 2) ; 0=aufsteigend 1=absteigend 2=nach Fundreihenfolge sortiert_ArrayDisplay($FileList, "$FileList ")
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
Gruß Ralf