Dateien auf Netzlaufwerk kopieren

Anfängerfragen zum Programmieren mit PureBasic.
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von Mr.Vain »

Rings hat geschrieben:'Net use' benutzen ,
damit kann man laufwerke mappen, auch mit Möränen und Passtwörtern

Funktioniert, danke!

Stellt sich noch die Frage, wie ich prüfen kann, ob der Laufwerksnamen bereits vergeben ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von bobobo »

Laufwerksnamen (Buchstaben nehm ich an) brauchst Du gar nicht.

Greif auf das entfernte über den UNC-Freigabenamen zu


also \\Servername\freigabename\undsoweiter


liest Du auch mal die Antworten hier? Eigentlich steht das da oben schon irgendwo.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von Mr.Vain »

Gibt es ein Befehl, mit dem ich das gesamte Windows-Fenster neu laden (aktualisieren) kann?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von ts-soft »

Mr.Vain hat geschrieben:Gibt es ein Befehl, mit dem ich das gesamte Windows-Fenster neu laden (aktualisieren) kann?
Wozu sollte das nötig sein, macht Windows doch von alleine, es sei denn, Dein EventLoop ist müll,
das kann ich aber ohne Source nicht beurteilen.

Kamikaze-Methode:

Code: Alles auswählen

InvalidateRect_(hWnd, 0, 1)
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von Mr.Vain »

Hier mal ein teil meines Quellcodes:

Buttons werden hier anhand einer INI-Datei erstellt. Im Programm kann ich im Menü diese INI Datei öffnen und ändern und nach dem Speichern möchte ich, dass das Programm die Buttons neu "einliest".

Code: Alles auswählen

 
Repeat
  Define event = WaitWindowEvent()
  Select event
  
    Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 800 ; About
            EditIni()
            ReadIni()
            
        EndSelect
        

    Case #PB_Event_CloseWindow
      End

    Case #PB_Event_Gadget
      If EventGadget()!501
              Check()
              Argument$=program(EventGadget()-1)
              PC$=GetGadgetText(501)
             If EventGadget()<49
              PsExec(PC$,Argument$)
             EndIf 
             If EventGadget()>48 And EventGadget()<100
              PsExecI(PC$,Argument$)
             EndIf

      EndIf

  EndSelect
ForEver
        ; Argument$ = COM_BUTTON1$
         ; Check()
         ; PsExec(PC$,Argument$)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von ts-soft »

Also ganz was anderes. Dann mußte alle Gadgets freigeben, bevor sie neu erstellt werden.
FreeGadget(x)
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von Mr.Vain »

ts-soft hat geschrieben:Also ganz was anderes. Dann mußte alle Gadgets freigeben, bevor sie neu erstellt werden.
FreeGadget(x)

Und wo genau muss ich das einbauen? Das x ist die Gadget-ID ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von ts-soft »

Mr.Vain hat geschrieben:Und wo genau muss ich das einbauen? Das x ist die Gadget-ID ?
Ja, das x steht für die GadgetID.

Woher soll ich das Wissen, ohne Deinen Code zu kenne. Entweder nimmste eine Schleife
zum Freigeben, oder machst es einzeln. Dann erstellste sie die neuen gadgets eben wieder.
Bei vielen Gadgets wird das aber k*cke aussehen.
Hinzufügen oder Entfernen oder GadgetID überschreiben wäre auch noch möglich.

Aber bisher gibts hier keine ausreichenden Hinweise oder Sourcen um da zu helfen.
Aber wie man Gadget freigibt und neue erstellt steht ja auch in der Hilfe.
Mr.Vain
Beiträge: 88
Registriert: 29.10.2009 00:14

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von Mr.Vain »

Danke für deine Hilfe,

hier mal der gesamte Code:

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;
;
; ------------------------------------------------------------

Define i
Define z
Define k
Define l
Dim program.s(0)


#WindowWidth  = 390
#WindowHeight = 350

LoadFont(0, "Arial", 10,#PB_Font_Bold)

Global PSEXEC$
Global PC$
Global Argument$
Global INI_Datei$


Procedure PsExec(PC$, Argument$)


RunProgram(PSEXEC$,"-i \\"+PC$+" "+Argument$,"", #PB_Program_Hide)

EndProcedure

Procedure PsExecI(PC$, Argument$)


RunProgram(PSEXEC$,"\\"+PC$+" -i -c "+Argument$,"", #PB_Program_Hide)

EndProcedure

Procedure CreateIni()



If FileSize(INI_Datei$) <= 0
; Neue Datei
  If CreatePreferences(INI_Datei$)
        PreferenceComment("Einstellungen der PSEXEC")
        PreferenceComment("")
        PreferenceGroup("BUTTON1")     
        WritePreferenceString("BEZEICHNUNG", "CMD" )
        WritePreferenceString("BEFEHL", "cmd.exe" )
        
     ClosePreferences()
             
  Else
     MessageRequester("Error", "Fehler beim Anlegen der INI-Datei " + INI_Datei$ )
  EndIf
  
 EndIf
EndProcedure

Procedure EditIni()

                WinDir$ = Space(100): GetSystemDirectory_(WinDir$,100)
                
                RunProgram(WinDir$+"\notepad.exe", INI_Datei$, "" )

EndProcedure

Procedure Check()
      PSEXEC$ = GetCurrentDirectory()
      PSEXEC$ = PSEXEC$ + "psexec.exe"
      PC$ = GetGadgetText(501)
      If PC$ = ""
          MessageRequester("Fehler", "Bitte PC-Name angeben!")
         Goto nochmal
      EndIf
      
      If FileSize(PSEXEC$) <= 0
          MessageRequester("Fehler", "psexec.exe nicht gefunden!")
          Goto nochmal
      EndIf
EndProcedure

Procedure ReadIni()

Dim program.s(0)
INI_Datei$ = GetCurrentDirectory()
INI_Datei$ = INI_Datei$ + "psexec.ini"

OpenPreferences(INI_Datei$)
 
 i=1
 z=1
 
While PreferenceGroup("Program"+Str(i))

  ReDim program(i)
  ButtonGadget(i, ((i-1)*83)+30-((z-1)*332), ((z-1)*30)+145, 70, 20, ReadPreferenceString("BEZEICHNUNG", "Cmd"))
  program(i-1) = ReadPreferenceString("BEFEHL", "cmd.exe")
  i+1
  
  If i=5
  z+1
  EndIf
Wend

 i=50
 z=1
 k=1
 
While PreferenceGroup("Install"+Str(k))

  ReDim program(i)
  ButtonGadget(i, ((k-1)*83)+30-((z-1)*332), ((z-1)*30)+245, 70, 20, ReadPreferenceString("BEZEICHNUNG", "Cmd"))
  program(i-1) = ReadPreferenceString("BEFEHL", "cmd.exe")
  i+1
  k+1
  
  If i=55
  z+1
  EndIf
Wend
 ClosePreferences()

EndProcedure

nochmal:
OpenWindow(200, 500, 200, #WindowWidth, #WindowHeight, "    PSEXEC GUI", #PB_Window_MinimizeGadget)
 
 
 
 ReadIni()
 
 If CreateMenu(700, WindowID(200))
    MenuTitle("Datei")
      MenuItem( 800, "Settings")
      
      
 EndIf  
   
 
 
  EventID = WaitWindowEvent()

  CreateIni()
 
  TextGadget(102,60,60,80,25, "PC-Name:")
  
  StringGadget(501,  120, 60, 100, 20, "")
  SetGadgetFont(#PB_Default, FontID(0))
  TextGadget(103,30,120,80,25, "Anwendung:")  
  SetGadgetFont(#PB_Default, #PB_Default) 
  SetGadgetFont(#PB_Default, FontID(0))
  TextGadget(113,30,220,80,25, "Installation:")   
  SetGadgetFont(#PB_Default, #PB_Default)         

   
Repeat
  Define event = WaitWindowEvent()
  Select event
  
    Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 800 ; About
            EditIni()  
            
        EndSelect
        
        
        
    Case #PB_Event_CloseWindow
      End
      
    
    Case #PB_Event_Gadget
      If EventGadget()!501
              Check()
              Argument$=program(EventGadget()-1)
              PC$=GetGadgetText(501)
             If EventGadget()<49
              PsExec(PC$,Argument$)
             EndIf 
             If EventGadget()>48 And EventGadget()<100
              PsExecI(PC$,Argument$)
             EndIf
      
      
      EndIf
  
  EndSelect
ForEver
        ; Argument$ = COM_BUTTON1$
         ; Check()
         ; PsExec(PC$,Argument$)
         
 

Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Dateien auf Netzlaufwerk kopieren

Beitrag von ts-soft »

In der ReadIni Procedure mußte festhalten, wieviele Buttons Du erstellt hast. Desweiteren bevor neue Buttons erstellt werden, die alten erstmal entfernen.
Antworten