Hier der Quellcode (3.94), falls ihn jmd. brauchen kann:
Code: Alles auswählen
;
; PureBasic Visual Designer v3.92 build 1460
;Programmkonstante
#OptionenAnzahl = 20
;Prozeduren deklarieren um sie sofort benutzen zu können
Declare.s GetExePath() : Declare ReadConfig() : Declare SchreibeConfig()
Declare MessageBoxH(parentWindow, title.s, message.s,flags)
Declare LeseDefaultOptions()
Declare BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
Declare CheckDirExist()
Declare.s GetTempPath()
Declare FileCheck()
;Globale Variable
Global OptionCounter.b, StammVerzeichnis$, mbHook.l, hThreadId.l, Url.s
StammVerzeichnis$=GetExePath()
Url.s = "http://home.arcor.de/pb_zomtec/hc/"
;Variable für die Konfig-Datei dimensionieren
Dim HCini.s(#OptionenAnzahl) : Dim Keyword$(#OptionenAnzahl) : Dim StandardWert$(#OptionenAnzahl)
LeseDefaultOptions()
ReadConfig()
CheckDirExist()
;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration
;- MenuBar Constants
Enumeration
  #MenuBar_0
EndEnumeration
Enumeration
  #MENU_4
  #MENU_5
  #MENU_9
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_update
EndEnumeration
; BalloonTip Constants 
Enumeration
#TOOLTIP_NO_ICON
#TOOLTIP_INFO_ICON
#TOOLTIP_WARNING_ICON
#TOOLTIP_ERROR_ICON
EndEnumeration 
;- Gadget Constants
;
Enumeration
  #String_FileRequest1  ;0    Kommentierte GadgetConstants müssen in der festen Position
  #String_FileRequest2  ;1    bleiben, da dies für den späteren Programmablauf notwendig ist
  #ExplorerCombo_0      ;2
  #CheckBox_NTFSrechte  ;3
  #CheckBox_Save        ;4
  #CheckBox_QuestEnd    ;5
  #CheckBox_QuestStart  ;6
  #CheckBox_Log
  #Text_0
  #Text_1
  #Text_3
  #ExplorerCombo_1
  #Combo_Kopierrichtung
  #Button_Start
  #Button_Ende
  #Frame3D_0
  #Button_MakeDefault
  #Text_Parameter
  #String_RoboParameter
  #Text_ParamterWarning
  #Button_FileRequest1
  #Button_FileRequest2
EndEnumeration
;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 18)
Global FontID2
FontID2 = LoadFont(2, "Arial", 12)
Global FontID3
FontID3 = LoadFont(3, "Arial", 16)
Global FontID4
FontID4 = LoadFont(4, "Arial", 8, #PB_Font_Bold)
Global FontID5
FontID5 = LoadFont(5, "Arial", 9)
Global FontID6
FontID6 = LoadFont(6, "Arial", 9, #PB_Font_Bold)
Global FontID7
FontID7 = LoadFont(3, "Arial", 8)
Global FontID8
FontID8 = LoadFont(2, "Arial", 10, #PB_Font_Bold)
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 642, 482,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar , #Version$)
    If CreateMenu(#MenuBar_0, WindowID())
      MenuTitle("Datei")
      MenuItem(#MENU_4, "Öffnen")
      MenuItem(#MENU_5, "Speichern")
      MenuBar()
      MenuItem(#MENU_9, "Beenden")
      MenuTitle("Bearbeiten")
      MenuItem(#MENU_11, "Einstellungen")
      MenuTitle("?")
      MenuItem(#MENU_12, "Hilfe")
      MenuItem(#MENU_update, "Auf Update prüfen...")
      MenuItem(#MENU_13, "Über")
      EndIf
      If CreateGadgetList(WindowID())
        TextGadget(#Text_0, 5, 0, 470, 30, HCini.s(8))
          SetGadgetFont(#Text_0, FontID1)
        
        StringGadget(#String_FileRequest1, 120, 30, 510, 22, HCini.s(0))
          SetGadgetFont(#String_FileRequest1, FontID2)
        
        ButtonGadget(#Button_FileRequest1, 10, 30, 100, 22, "Ordner wählen...")
         
        TextGadget(#Text_1, 5, 70, 470, 30, HCini.s(9))
          SetGadgetFont(#Text_1, FontID1)
        
        StringGadget(#String_FileRequest2, 120, 100, 510, 22, HCini.s(1))
          SetGadgetFont(#String_FileRequest2, FontID2)
        
        ButtonGadget(#Button_FileRequest2, 10, 100, 100, 22, "Ordner wählen...")
                
        ComboBoxGadget(#Combo_Kopierrichtung, 95, 140, 450, 115)
          SetGadgetFont(#Combo_Kopierrichtung, FontID2)
            AddGadgetItem(#Combo_Kopierrichtung, 0, "Vom PC auf USB-Stick/Festplatte kopieren")
            AddGadgetItem(#Combo_Kopierrichtung, 1, "Von USB-Stick/Festplatte auf PC kopieren")
        ButtonGadget(#Button_Start, 20, 400, 140, 40, "Starten")
          SetGadgetFont(#Button_Start, FontID3)
        
        ButtonGadget(#Button_Ende, 480, 400, 140, 40, "Beenden")
          SetGadgetFont(#Button_Ende, FontID3)
        
        Frame3DGadget(#Frame3D_0, 40, 190, 550, 185, "Einstellungen:")
          SetGadgetFont(#Frame3D_0, FontID2)
      
        ButtonGadget(#Button_MakeDefault, 50, 210, 140, 20, "Auf Standard zurücksetzen")
      
        CheckBoxGadget(#CheckBox_NTFSrechte, 50, 240, 300, 15, "NTFS-Rechte kopieren")
      
        CheckBoxGadget(#CheckBox_Save, 50, 260, 300, 15, "Einstellungen beim Beenden speichern")
      
        CheckBoxGadget(#CheckBox_Log, 50, 280, 330, 15, "Log-Datei erstellen")
      
        CheckBoxGadget(#CheckBox_QuestEnd, 350, 240, 235, 15, "Sicherheitsabfrage beim Beenden")
      
        CheckBoxGadget(#CheckBox_QuestStart, 350, 260, 235, 15, "Sicherheitsabfrage vor dem Kopieren")
      
        TextGadget(#Text_Parameter, 50, 305, 150, 20, "Robocopy Parameter:")
          SetGadgetFont(#Text_Parameter, FontID6)
      
        StringGadget(#String_RoboParameter, 50, 325, 280, 20, HCini.s(7))
          Tooltip$="ACHTUNG! Die Standardkopierparameter sind auf Mirror gesetzt, das Quell-"
          Tooltip$+Chr(10)+"verzeichnis wird also ins Zielverzeichnis gespiegelt, d. h. evtl. vorhandene"
          Tooltip$+Chr(10)+"Dateien/Ordner im Zielverzeichnis werden überschrieben/gelöscht, sofern sie"
          Tooltip$+Chr(10)+"im Quellverzeichnis vorhanden/nicht vorhanden sind!" 
          BalloonTip(#Window_0, #String_RoboParameter, Tooltip$, "Wichtiger Hinweis!", #TOOLTIP_WARNING_ICON)
      
        TextGadget(#Text_ParamterWarning, 50, 350, 370, 20, "(Warnung! Die Syntax wird nicht geprüft! Du solltest also wissen was du tust!)")
        
      EndIf
    EndIf
EndProcedure
Procedure CheckQuit()
  If HCini.s(5)="0"
    If HCini.s(4)="1" : SchreibeConfig() : EndIf
    End
  ElseIf MessageRequester("Beenden?", "Willst Du wirklich beenden?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
    If HCini.s(4)="1" : SchreibeConfig() : EndIf
    End
  EndIf
EndProcedure
Procedure AboutMessage()
  a$=Chr(169)+" Jan. 2006 by Baumi"+Chr(10)+Chr(10)
  a$+"Email: pb_zomtec@arcor.de"+Chr(10)+"Homepage: http://home.arcor.de/pb_zomtec/hc/"
  a$+Chr(10)+Chr(10)+"HandlCopy ist Freeware"
  a$+Chr(10)+Chr(10)+"Feel free to use and copy it..."
  MessageBoxH(0, a$, #version$,#MB_OK)
EndProcedure
Procedure.s GetExePath() ;aktuelles .exe-Verzeichnis ermitteln
  ;#MAX_PATH=260, max. Pfadlänge
  Prg.s = Space(#MAX_PATH) 
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
  If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
  ProcedureReturn Prg
EndProcedure
;Preferences lesen
Procedure ReadConfig()
  OpenPreferences(StammVerzeichnis$+"HC.ini")
    For k=0 To OptionCounter
      HCini.s(k) = ReadPreferenceString(Keyword$(k), StandardWert$(k))
    Next k
  ClosePreferences()
EndProcedure
;Preferences schreiben 
Procedure SchreibeConfig()
  If CreatePreferences(StammVerzeichnis$+"HC.ini") 
    For k=0 To OptionCounter
      WritePreferenceString(Keyword$(k), HCini.s(k))
    Next k 
    ClosePreferences()
  EndIf
EndProcedure
Procedure VerzQuelle(wert)
  FileRequest$ = PathRequester("Ordner auswählen", HCini.s(wert))
  If FileRequest$<>""
    If Right(FileRequest$, 1) = "\" : FileRequest$=Left(FileRequest$, Len(FileRequest$)-1) : EndIf
      If wert=0
        SetGadgetText(#String_FileRequest1, FileRequest$)
      Else
        SetGadgetText(#String_FileRequest2, FileRequest$)  
      EndIf
      HCini.s(wert)=FileRequest$
  EndIf
EndProcedure
;CheckBox auslesen und HCini.s setzen
Procedure LeseCheckBox(GadgetNr,arraynr)
  If GetGadgetState(GadgetNr) = 0
    HCini.s(arraynr)="0"
  Else
    HCini.s(arraynr)="1"
  EndIf
EndProcedure
Procedure CheckLog()
  a$ = GetGadgetText(#String_RoboParameter)
  a$ = RemoveString(a$, " /LOG:HandlCopy_log.txt", 1)
  a$ = RemoveString(a$, "/LOG:HandlCopy_log.txt", 1)
    
  If HCini.s(10)="1"
    a$ + " /LOG:HandlCopy_log.txt"
  EndIf
  
  SetGadgetText(#String_RoboParameter,a$)
  HCini.s(7)=a$
EndProcedure
Procedure CheckNtfs()
  a$=GetGadgetText(#String_RoboParameter)
  a$ = RemoveString(a$, " /COPYALL", 1)   ;zuerst alle Parameter entfernen
  a$ = RemoveString(a$, " /COPY:DAT", 1)  ;mit " " falls nicht am Anfang des Strings
  a$ = RemoveString(a$, "/COPYALL", 1)
  a$ = RemoveString(a$, "/COPY:DAT", 1)
  
  If HCini.s(3)="0"
    If FindString(a$, "/COPYALL", 1) <> 0 ;und nun je nach CheckBoxAuswahl wieder hinzufügen
      a$=ReplaceString(a$, "/COPYALL", "/COPY:DAT", 1)
    Else
      a$+" /COPY:DAT"
    EndIf
  ElseIf HCini.s(3)="1"
    If FindString(a$, "/COPY:DAT", 1) <> 0
      a$=ReplaceString(a$, "/COPY:DAT", "/COPYALL", 1)
    Else
      a$+" /COPYALL"
    EndIf
  EndIf
  
  SetGadgetText(#String_RoboParameter,a$)
  HCini.s(7)=a$
EndProcedure
;Prüfen ob Verzeichnis existiert
Procedure CheckDirectory(StringFileRequest,arraynr,EventType)
If EventType=#PB_EventType_LostFocus ;Prüfung wird erst durchlaufen, wenn StringGadget verlassen wird
  file$ = GetGadgetText(StringFileRequest) 
  If Right(file$, 1) = "\" : file$=Left(file$, Len(file$)-1) : EndIf
  
  If FileSize(file$)=-2 And file$<>HCini.s(arraynr)    ;-2 = Directory existiert
    HCini.s(arraynr)=file$
    SetGadgetText(StringFileRequest, HCini.s(arraynr))
  EndIf
EndIf
EndProcedure
Procedure CheckDirExist()
  For k=0 To 1
    If FileSize(HCini.s(k))<>-2    ;Directory existiert nicht od. ist Datei
      HCini.s(k)=GetTempPath()
    EndIf
  Next k
EndProcedure
  Procedure.s GetTempPath() 
    Protected Result.s 
    Result = Space(#MAX_PATH) 
    GetTempPath_(#MAX_PATH, @Result) 
    If Right(Result,1) <> "\" : Result + "\" : EndIf 
    ProcedureReturn Result
  EndProcedure
;Defaultwerte einlesen
Procedure LeseDefaultOptions()
  OptionCounter=0
  Restore DefaultOptions
  Repeat
    Read Keyword$(OptionCounter)
    Read StandardWert$(OptionCounter)
    HCini.s(OptionCounter)=StandardWert$(OptionCounter)
    OptionCounter + 1
  Until Keyword$(OptionCounter-1)="ende"
EndProcedure
;Standardeinstellungen auf Gadgets anwenden
Procedure SetzeGadgetStatus()
  For k=#String_FileRequest1 To #String_FileRequest2
    If FileSize (HCini.s(k))=-2
      SetGadgetText(k, HCini.s(k))
    Else
      SetGadgetText(k, "C:\")
    EndIf
  Next k
  
  If HCini.s(2)="pc->usb"       ;Standardwert setzen
    SetGadgetState(#Combo_Kopierrichtung, 0)
  Else
    SetGadgetState(#Combo_Kopierrichtung, 1)
  EndIf
  
  For k=#CheckBox_NTFSrechte To #CheckBox_QuestStart
    If HCini.s(k)="0"
      SetGadgetState(k, 0)
    Else
      SetGadgetState(k, 1)
    EndIf
  Next k
  
  If HCini.s(10)="0"      ;10 = #CheckBox_Log
    SetGadgetState(#CheckBox_Log, 0)
  Else
    SetGadgetState(#CheckBox_Log, 1)
  EndIf
  
  SetGadgetText (#String_RoboParameter, HCini.s(7))
EndProcedure
Procedure Kopierrichtung()
  k=GetGadgetState(#Combo_Kopierrichtung)
  If k=0
    HCini.s(2)="pc->usb"
  ElseIf k=1
    HCini.s(2)="usb->pc"
  EndIf
EndProcedure
Procedure StartKopie()
  If HCini.s(2)="pc->usb"
    Quelle$=HCini.s(0) : Ziel$=HCini.s(1)
  Else
    Quelle$=HCini.s(1) : Ziel$=HCini.s(0)
  EndIf
  ;mit Chr(34) Anführungszeichen vor die Pfade, damit auch Verzeichnisse
  ;mit Leerzeichen funktionieren
  parameter$ + " " + Chr(34) + Quelle$ + Chr(34) + " " + Chr(34) + Ziel$ + Chr(34) + " " + HCini.s(7)
  If HCini.s(6)="1"
    a$="Robocopy.exe wird mit folgenden Parametern gestartet:"
    a$+Chr(10)+Chr(10)+parameter$
    a$+Chr(10)+Chr(10)+"!!!ACHTUNG!!!"
    a$+Chr(10)+"Die Standardkopierparameter sind auf Mirror gesetzt,"
    a$+Chr(10)+"das Quellverzeichnis ("+Quelle$+")"
    a$+Chr(10)+"wird also ins Zielverzeichnis ("+Ziel$+")"
    a$+Chr(10)+"gespiegelt, d. h. evtl. vorhandene Dateien/Ordner in "
    a$+Chr(10)+Ziel$+" werden überschrieben/gelöscht, sofern sie"
    a$+Chr(10)+"in "+Quelle$+" vorhanden/nicht vorhanden sind!" 
    a$+Chr(10)+Chr(10)+"Soll HandlCopy den Kopiervorgang jetzt starten?"
    a=MessageBoxH(0, a$, "Kopiervorgang starten?",#MB_YESNO)
  EndIf
  
  If a=6  ;6 = ja
    If RunProgram(StammVerzeichnis$+"robocopy.exe", parameter$, StammVerzeichnis$, 1)
      ;MessageRequester("Kopie gestartet", "Robocopy erfolgreich gestartet")
      If RunProgram("notepad.exe", StammVerzeichnis$+"HandlCopy_log.txt",StammVerzeichnis$) : EndIf
    Else
      a$="Robocopy konnte nicht gestartet werden!"
      a$+Chr(10)+Chr(10)+"Ist die Robocopy.exe im Ordner"+Chr(10)
      a$+StammVerzeichnis$+Chr(10)+" vorhanden?"+Chr(10)+Chr(10)
      a$+"Robocopy.exe ist "+Chr(169)+" by Microsoft und Bestandteil des Windows Server 2003 Resource Kit Tools,"
      a$+" das hier:"+Chr(10)
      a$+"http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en"
      a$+Chr(10)+"heruntergeladen werden kann."
      MessageBoxH(0, a$, "Fehler!",#MB_OK)
    EndIf
  EndIf
EndProcedure
Procedure RoboParameter(EventType)
  If EventType=#PB_EventType_LostFocus ;Prüfung wird erst durchlaufen, wenn StringGadget verlassen wird
    HCini(7)=GetGadgetText(#String_RoboParameter)
    SetzeGadgetStatus()
  EndIf
EndProcedure
Procedure Hilfe()
  If OpenHelp(StammVerzeichnis$+"\HandlCopy.chm", "Überblick")
  ElseIf MessageBoxH(0, "Hilfedatei HandlCopy.chm nicht gefunden!"+Chr(10)+Chr(10)+"Datei kann hier heruntergeladen werden: http://home.arcor.de/pb_zomtec/hc/HandlCopy.chm", "Fehler!",#MB_OK)
  EndIf
EndProcedure
Procedure UpdateCheck()
  Version_datei$ = StammVerzeichnis$ + "version.txt"
  ;version.txt vom Server laden:
  URLDownloadToFile_(0, URL.s + "version.txt", Version_datei$, 0, 0)
  If ReadFile(0, Version_datei$)  ;version.txt auslesen
    Versionsnummer$ = ReadString()  ;versionsnr. von Handlcopy
    Versionupdater$ = ReadString()  ;versionsnr. der update.exe
    CloseFile(0)
    If Versionsnummer$ <> #Version$ Or Versionupdater$ <> #updater$ ;Serverversionen mit lokalen vergleichen
      a$ = "Neue Version vorhanden!" + Chr(10) + Chr(10)
      a$ + "Soll ich die neue Version herunterladen und installieren?" + Chr(10) + Chr(10)
      a$ + "Bestehende Internetverbindung erforderlich!"
      a = MessageBoxH(0, a$, "Updatecheck",#MB_YESNO)
      If a=6 ;6 = ja
        If Versionupdater$ <> #updater$
          URLDownloadToFile_(0, URL.s + "update.exe", StammVerzeichnis$ + "update.exe", 0, 0) ;neue update.exe-Version vom Server laden
        ElseIf Versionsnummer$ <> #Version$
          exename$ = "HandlCopy.exe"
          PID$ = Str(GetProcessPID(exename$))  ;PID von .exe mit PBOSL ermitteln
          ;Übergabeparameter
          a$ = StammVerzeichnis$ + " "  ;.exe-Startverzeichnis
          a$ + PID$ + " "               ;PID der .exe als String
          a$ + URL.s + " "              ;Download-URL des Updates
          a$ + exename$                 ;Name der zu updatenden .exe (incl. .exe-Extension)
          If RunProgram(StammVerzeichnis$+"update.exe", a$, "")
            HCini.s(5)="0"  ;Sicherheitsabfrage beim beenden abschalten
            Delay(3000)
            CheckQuit()
          Else
            a$ = "Update.exe nicht gefunden!" + Chr(10) + Chr(10)
            a$ + "update.exe ist für's Update erforderlich." + Chr(10) + Chr(10)
            a$ + "Im nächsten Dialog kannst du sie zum Download auswählen. Anschließend" + Chr(10)
            a$ + "muss die Updateprüfung erneut aufgerufen werden."
            MessageBoxH(0, a$, "Fehler!",#MB_OK)
            FileCheck()
          EndIf
        EndIf
      EndIf  
    Else
      MessageRequester("Updatecheck","Keine neue Version vorhanden!")
    EndIf
  Else
    MessageRequester("Fehler!","Version konnte nicht überprüft werden! Besteht Internetverbindung?")
  EndIf
EndProcedure
Procedure FileCheck() ;Überprüfen ob .chm, robocopy.exe, update.exe im stammverzeichnis vorhanden
  Restore FileCheck
  For k=0 To 2
    Read Datei$     ;zu überprüfende Datei
    Read DownURL$   ;DownloadURL
  
    If FileSize(StammVerzeichnis$+Datei$) = -1
      a$ = "Keine "+ Datei$ + " gefunden!" + Chr(10) + Chr(10)
      a$ + "Soll HandlCopy die " + Datei$ + " aus dem Internet herunterladen?" + Chr(10) + Chr(10)
      a$ + "Bestehende Internetverbindung erforderlich!"
      a=MessageBoxH(0, a$, "Dateiüberprüfung",#MB_YESNO)
      If a=6  ;6 = ja
        URLDownloadToFile_(0, DownURL$ + Datei$, StammVerzeichnis$+Datei$, 0, 0)
      EndIf
      If FileSize(StammVerzeichnis$+Datei$) = -1
        MessageRequester("Fehler!", "Download von "+Datei$+" fehlgeschlagen!")
      EndIf
    EndIf
  Next k
EndProcedure
;------------- Beginn MessageRequester zentrieren -------------
; Code aus CodeArchiverViewer 1.0
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2958&highlight=
; Author: Andreas
; Date: 30. November 2003
; OS: Windows
; Demo: No
;Global mbHook.l,hThreadId.l
Procedure MsgBoxHookProc(uMsg,wParam,lParam)
  Protected Messagehandle.l
  Select uMsg
  Case #HCBT_ACTIVATE
    Messagehandle = GetDlgItem_(wParam,$FFFF)
    SetWindowLong_(Messagehandle,#GWL_STYLE,#WS_VISIBLE|#WS_CHILD|#SS_CENTER);Zentriert
    ;SetWindowLong_(Messagehandle,#GWL_STYLE,#WS_VISIBLE|#WS_CHILD|#SS_RIGHT);rechts
    UnhookWindowsHookEx_(mbHook)
  EndSelect
  ProcedureReturn 0
EndProcedure
Procedure MessageBoxH(parentWindow, title.s, message.s,flags)
  mbHook = SetWindowsHookEx_(#WH_CBT, @MsgBoxHookProc(), GetModuleHandle_(0), hThreadId)
  ProcedureReturn MessageBox_(parentWindow,title,message,flags)
EndProcedure
;Aufruf MessageRequester:
;MessageBoxH(0, "Text", "Titel",#MB_OKCANCEL)
;------------- Ende MessageRequester zentrieren -------------
Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon) 
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0) 
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0) 
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0) 
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,380) 
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO) 
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS 
  Balloon\hWnd=GadgetID(Gadget) 
  Balloon\uId=GadgetID(Gadget) 
  Balloon\lpszText=@Text$ 
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon) 
  If Title$ > "" 
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$) 
  EndIf 
  
EndProcedure 
DataSection
DefaultOptions:
  Data$ "0_PC-Verzeichnis", "c:\test", "1_USB-Verzeichnis", "c:\temp"
  Data$ "2_Copydirection (pc->usb od. usb->pc)", "pc->usb"
  Data$ "3_ntfs-rights (0->nein/1->ja)", "0"
  Data$ "4_AutoSave (0->nein/1->ja)", "1", "5_QuestEnd (0->nein/1->ja)", "0"
  Data$ "6_QuestStart (0->nein/1->ja)", "1"
  Data$ "7_RobocopyParameter", "/MIR /COPY:DAT /LOG:HandlCopy_log.txt"
  Data$ "8_TextPfad1", "PC-Festplattenordner auswählen:"
  Data$ "9_TextPfad2", "USB-Stick/Festplatten-Ordner auswählen:"
  Data$ "10_LogDatei (0->nein/1->ja)", "1"
  Data$ "ende","ende"
EndDataSection
DataSection
FileCheck:
  Data$ "HandlCopy.chm", "http://home.arcor.de/pb_zomtec/hc/"
  Data$ "robocopy.exe", "http://www.msu-hb.de/download/"
  Data$ "update.exe", "http://home.arcor.de/pb_zomtec/hc/"
EndDataSection
; IDE Options = PureBasic v3.94 (Windows - x86)
; CursorPosition = 462
; FirstLine = 432
; Folding = -----
; Executable = ..\MeineExecutes\HandlCopy\HandlCopy.exe