Autor Beitrag
CodeRed
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: Fr 23.09.05 18:16 
Hi!
Ich will ein Programm schreiben, mit dem ich auf einen klick Daten zwischen Laptop und PC hin und her schaffen kann. Meine Idee war es, das Problem mit der $-Freigabe zu lösen. Mein letztes Problem ist nun noch, wie ich dem Netzwerkrechner den Beutzernamen (Administrator) und das Passwort mitteilen soll.
Ich hoffe ihr könnt mir helfen.
MfG
CodeRed
Hansi@OMG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304

Vista
Delphi 2006 Prof., Lazarus
BeitragVerfasst: Fr 23.09.05 18:58 
Du könntest temporär ein Netzlaufwerk verbinden und dann wieder trennen.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
function NetzlaufwerkVerbinden( Laufwerk: string;
  Pfad: string; Username: string; Password: string;
  RestoreAtLogon: boolean ): DWORD;
var
  NetResource: TNetResource;
  dwFlags:     DWORD;
begin
  with NetResource do begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(Laufwerk);
    lpRemoteName := PChar(Pfad);
    lpProvider := nil;
  end;

  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;

  Result := WNetAddConnection2(NetResource,PChar(Password),
    PChar(Username),dwFlags);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (NetzlaufwerkVerbinden('X:',
                            '\\NTSERVER\DATEN',
                            'Test',
                            '',
                            false)=0)
  then
    ShowMessage('OK')
  else
    ShowMessage('Fehler!');
end;

function ConnectPrinterDevice(_lptPort: string; _netPath: string; _showError: Boolean;
  _reconnect: Boolean): DWORD;
var
  nRes: TNetResource;
  errCode: DWORD;
  dwFlags: DWORD;
begin
  { Fill NetRessource with #0 to provide uninitialized values }
  { NetRessource mit #0 füllen => Keine unitialisierte Werte }
  FillChar(NRes, SizeOf(NRes), #0);
  nRes.dwType := RESOURCETYPE_PRINT;
  { Set Printername and Networkpath }
  { Druckername und Netzwerkpfad setzen }
  nRes.lpLocalName  := PChar(_lptPort);
  nRes.lpRemoteName := PChar(_netPath); { Example: \\Test\Printer1 }
  { Check if it should be saved for use after restart and set flags }
  { Überprüfung, ob gespeichert werden soll }
  if _reconnect then
    dwFlags := CONNECT_UPDATE_PROFILE and CONNECT_INTERACTIVE
  else
    dwFlags := CONNECT_INTERACTIVE;

  errCode := WNetAddConnection3(Form1.Handle, nRes, nilnil, dwFlags);
  { Show Errormessage, if flag is set }
  { Fehlernachricht aneigen }
  if (errCode <> NO_ERROR) and (_showError) then
  begin
    Application.MessageBox(PChar('An error occured while connecting:' + #13#10 +
      SysErrorMessage(GetLastError)),
      'Error while connecting!',
      MB_OK);
  end;
  Result := errCode; { NO_ERROR }
end;

function DisconnectNetDrive(_locDrive: string; _showError: Boolean; _force: Boolean;
  _save: Boolean): DWORD;
var
  dwFlags: DWORD;
  errCode: DWORD;
begin
  { Set dwFlags, if necessary }
  { Setze dwFlags auf gewünschten Wert }
  if _save then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  { Cancel the connection see also at http://www.swissdelphicenter.ch/en/showcode.php?id=391 }
  { Siehe auch oben genannten Link (Netzlaufwerke anzeigen) }
  errCode := WNetCancelConnection2(PChar(_locDrive), dwFlags, _force);
  { Show Errormessage, if flag is set }
  { Fehlernachricht anzeigen }
  if (errCode <> NO_ERROR) and (_showError) then 
  begin
    Application.MessageBox(PChar('An error occured while disconnecting:' + #13#10 +
      SysErrorMessage(GetLastError)),
      'Error while disconnecting',
      MB_OK);
  end;
  Result := errCode; { NO_ERROR }
end;

_________________
Who doesn't know the Micrsoft developer "Mahatma Fatal Error"?
CodeRed Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: Fr 23.09.05 23:16 
ok, danke, hat super geklappt!!!
JustusJonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 222



BeitragVerfasst: Mi 11.01.06 15:35 
Da bedanke ich mich auch mal. War mir sehr nützlich! :)

Greetz