| Autor |
Beitrag |
duffyducks444
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 06.08.03 17:55
Hallo Leute,
zuerst muss ich sagen das ich ein totaler dau und newbie im bereich delphi bin.
Leider erwartet aber mein chef von mir, dass ich ein proggie schreibe welches von jedem rechner aus gestartet werden kann. dort soll der mitarbeiter seinen benutzernamen und passwort angeben können und erst dann wird mit hilfe dieses benutzernamens die netzlaufwerke verbunden. Was das verbinden und trennen von netzlaufwerken angeht habe ich schon etwas gefunden nur müsste ich dort noch die eingabe des benutzers und passowortes einbinden. leider weiss ich nur nicht wie ich dies realisieren soll.
weiss jemand rat für mich? danke schonmal im voraus!
mfg marko
hier nun noch der sourcecode:
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: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function ConnectDrive(_drvLetter: string; _netPath: string; _showError: Boolean; _reconnect: Boolean): DWORD; var nRes: TNetResource; errCode: DWORD; dwFlags: DWORD; begin FillChar(NRes, SizeOf(NRes), #0); nRes.dwType := RESOURCETYPE_DISK; nRes.lpLocalName := PChar(_drvLetter); nRes.lpRemoteName := PChar(_netPath); if _reconnect then dwFlags := CONNECT_UPDATE_PROFILE and CONNECT_INTERACTIVE else dwFlags := CONNECT_INTERACTIVE;
errCode := WNetAddConnection3(Form1.Handle, nRes, nil, nil, dwFlags); 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; end;
function ConnectPrinterDevice(_lptPort: string; _netPath: string; _showError: Boolean; _reconnect: Boolean): DWORD; var nRes: TNetResource; errCode: DWORD; dwFlags: DWORD; begin FillChar(NRes, SizeOf(NRes), #0); nRes.dwType := RESOURCETYPE_PRINT; nRes.lpLocalName := PChar(_lptPort); nRes.lpRemoteName := PChar(_netPath); if _reconnect then dwFlags := CONNECT_UPDATE_PROFILE and CONNECT_INTERACTIVE else dwFlags := CONNECT_INTERACTIVE;
errCode := WNetAddConnection3(Form1.Handle, nRes, nil, nil, dwFlags); 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; end;
function DisconnectNetDrive(_locDrive: string; _showError: Boolean; _force: Boolean; _save: Boolean): DWORD; var dwFlags: DWORD; errCode: DWORD; begin if _save then dwFlags := CONNECT_UPDATE_PROFILE else dwFlags := 0; errCode := WNetCancelConnection2(PChar(_locDrive), dwFlags, _force); 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; end;
procedure TForm1.Button1Click(Sender: TObject); begin ConnectDrive('H:', '\\athlon\d$', True, True); end;
procedure TForm1.Button2Click(Sender: TObject); begin Close; end;
end. |
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mi 06.08.03 19:41
schönen Gruss an deinen Chef, der wahrscheinlich keinen blassen von Netzwerken hat (wie vielleicht viele Chefs?  )
Sicher kannst du sowas schreiben, aber was ist, wenn der Nutzer den Freigabenamen kennt und sich direkt via net use Kommando oder via Explorer verbindet ? Da schlägt dann deine nett gemeinte Passwortabfrage ins nirwana !
Besser, sofern WinNT, die Freigaben nur den Nutzern geben die sie auch brauchen. Da kommt dann die Passwortabfrage automatisch !
grez
msch
|
|
duffyducks444 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 06.08.03 20:44
Naja ob unsere Damen dies auf die Reihe bekommen ist fraglich und selbts wenn wär dies auch kein Problem. Vielleicht habe ich mich ja auch etwas blöd ausgedrückt. Wir haben in unserer Firma einen Linux Server mit Samba am laufen.
Dort sind Netzwerkuser eingerichtet die nicht mit den Benutzername der Worksstations übereinstimmen. Die Benutzerdaten des Netzwerkusers kennen unsere Damen ja auch (brauchen Sie ja auch zum arbeiten).
Ich könnte ja auch per net use die Netzlaufwerke verbinden. Aber für uns wurde vor einiger Zeit von einer Firma ein Programm für die Firma geschrieben und dieses soll erweitert werden (leider muss ich dies tun).
Die Erweiterung ist eben, das beim Programmstart ein Login erscheint. Dort soll man dann einen Benutzernamen und Passwort angeben (unser Netzwerkuser). Anschliessend soll dieses Programm unser Netzlaufwerk verbinden.
Wie ich dies in das bestehende Programm intigriere wurde mir schon mitgeteilt.
Wenn ich allerdings per net use arbeite muss ich auch den User eingeben daher eben die Frage ob ich dies nicht mit dem o.g. Script hinbekommen könnte.
Mfg
Marko
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Do 07.08.03 09:05
schau dir mal die funktion WNetConnectionDialog() an.
grez
msch
|
|
duffyducks444 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 07.08.03 09:30
Ist das das richtige ?
Quelltext 1: 2: 3: 4:
| DWORD WNetConnectionDialog( HWND hwnd, DWORD dwType ); |
was ist denn hwnd und dwType? Kannst Du mir das mal etwas genauer erklären? Wie gesagt ich bin voll der Neuling in Delphi.
Danke Marko
|
|
focus
      
Beiträge: 187
XP, 2k, 98, Me
D6 Prof
|
Verfasst: Do 07.08.03 10:11
Titel: und die msdn sprach es werde licht
| Zitat: |
WNetConnectionDialog
The WNetConnectionDialog function starts a general browsing dialog box for connecting to network resources. The function requires a handle to the owner window for the dialog box.
Quelltext 1: 2: 3: 4:
| DWORD WNetConnectionDialog( HWND hwnd, DWORD dwType ); |
Parameters
hwnd
[in] Handle to the owner window for the dialog box.
dwType
[in] Resource type to allow connections to. This parameter can be the following value. Value Meaning
RESOURCETYPE_DISK Connections to disk resources.
Return Values
If the function succeeds, the return value is NO_ERROR. If the user cancels the dialog box, the function returns ?1.
If the function fails, the return value is a system error code, such as one of the following values.
Return Code Description
ERROR_EXTENDED_ERROR A network-specific error occurred. To obtain a description of the error, call the WNetGetLastError function.
ERROR_INVALID_PASSWORD The specified password is invalid.
ERROR_NO_NETWORK The network is unavailable.
ERROR_NOT_ENOUGH_MEMORY There is insufficient memory to start the dialog box.
Remarks
If the user clicks OK in the dialog box, the requested network connection will have been made when the WNetConnectionDialog function returns.
If the function attempts to make a connection and the network provider returns the message ERROR_INVALID_PASSWORD, the system prompts the user to enter a password. The system uses the new password in another attempt to make the connection.
Requirements
Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, and Windows 95.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server.
Header: Declared in Winnetwk.h.
Library: Use Mpr.lib.
See Also
Windows Networking (WNet) Overview, Windows Networking Functions, WNetAddConnection3, WNetCancelConnection2, WNetDisconnectDialog
|
Gruss
Michael
Moderiert von Tino: Quote- & Code-Tags hinzugefügt.
|
|
duffyducks444 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 07.08.03 10:28
Also ich hab jetzt mal bei google.de gesucht und auch etwas gefunden nur scheint WnetConnectionDialog nicht das zu sein was ich benötige.
Dieser Dialog dient ja zum verbinden von Netzlaufwerken. Nur möchte ich ja nicht das dieser Dialog geöffnet wird sonder das ich wie ne Art Benutzeranmeldung als Formular kommt. Dort dann der User und das Passwort angegeben wird. Dann auf Anmelden klicken und die NEtzlaufwerke werden eingebunden. Diese stehen im Code dann schon drin.
In dem Code (1. Beitrag oben) habe ich das Problem das ich die Netzlaufwerke nicht einbinden kann, weil der PC Nutzer nicht der gleiche Netzwerknutzer ist. Ansonsten funktioniert der Code ja.
Dieses ist ja mein eigentliches Problem.
Marko
|
|
|