Seite 2 von 3

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 08.12.2009 17:20
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.

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 08.12.2009 17:23
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.

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 29.12.2009 17:57
von Mr.Vain
Gibt es ein Befehl, mit dem ich das gesamte Windows-Fenster neu laden (aktualisieren) kann?

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 29.12.2009 18:05
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)

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 10:52
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$)

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 11:18
von ts-soft
Also ganz was anderes. Dann mußte alle Gadgets freigeben, bevor sie neu erstellt werden.
FreeGadget(x)

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 11:44
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 ?

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 11:55
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.

Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 12:22
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$)
         
 


Re: Dateien auf Netzlaufwerk kopieren

Verfasst: 30.12.2009 12:37
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.