当然是windows消息,用findwindow API找到要求口令的窗口,用SendMessage对那个窗口的Handle发消息行吗?
另外,我不知道你的应用是什么样的,如果只是要访问服务器上的文件等,你可以在程序中映射网络驱动器,那个映射网络驱动器的API中本身就可以传用户名及口令等信息。

解决方案 »

  1.   

    var
      NetSource : TNetResource;
      rmdrive:string;
    begin
      rmdrive:='g:'
      with NetSource do
      begin
        dwType := RESOURCETYPE_DISK;
        lpLocalName :=pchar(rmdrive);  // 将远程资源映射到此驱动器
        lpRemoteName :=pchar('\\easy\e');  // 远程网络资源
        lpProvider := '';  // 必须赋值,如为空则使用lpRemoteName的值。
      end;
      if WnetAddConnection2(NetSource, 'password', 'guest', CONNECT_UPDATE_PROFILE)=NO_ERROR
       //用户名为Guest,口令为Password,下次登录时重新连接,此时在Windows资源管理器中可看到网络驱动器:
      then
        //showmessage('成功映射!')
      else
      begin
        showmessage('映射操作失败!');
        exit;
      end ;
      ChangeFile('d:\xlsdemo.exe',rmdrive+'\xlsde.exe');
    //  删除映射
     if WNetCancelConnection2(pchar(rmdrive),CONNECT_UPDATE_PROFILE,true)=NO_ERROR  then
    //   showmessage('删除映射成功!')
     else
       showmessage('删除映射操作失败!');
    end;