程序需要弹出ODBC配置窗口,并获得其设置的值(如选中的DSN等),如何实现?

解决方案 »

  1.   

    没做过~
     不过也不是不能做
     1 运行odbcad32  //打开ODBC配置窗口 winexce('odbcad32.exe.SW_SHOWNORMAL);
     2 HOOK这窗口 截取改窗口的关闭消息 
     3 findwindow  找到这窗口
     4 findwindowex 找到DSN列表控件的句柄 
     5 读出所有DSN名称
     
     然后开始设置DSN 
     设置完以后点确定会退出该窗口 会触发HOOK  
     此时再去读取所有DSN名称  
     和一开始得到的DSN列表比较一下 得到新增加的DSN的名称 呵呵 我没做过~ 纯粹纸上谈兵 
      

  2.   

    想想也没必要这么麻烦 
     1 运行odbcad32  //打开ODBC配置窗口 winexec('odbcad32.exe.SW_SHOWNORMAL);
     2 定时findwindow  如果DSN设置窗口没了
       就读取注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
       看看有没什么新增的DSN 就行了
      

  3.   

    呵呵。我做过这个东西。其实都在adodb.pas这个单元里面。有函数可以调用的。函数格式说明:
    function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;你创建一个FORM,扔上一个buttom和一个ADOConnection。
    代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOConnection1.Connected:=False;
      ADOConnection1.ConnectionString:=PromptDataSource(Handle,ADOConnection1.ConnectionString);
      ADOConnection1.Open;
      showmessage(ADOConnection1.ConnectionString);
    end;运行程序点按钮,弹出ODBC设置框。确认后就可以在showmessage里看到接连的string了哈哈!
      

  4.   


    to  yeweimian1(我是哈哈乐) :   这个窗口显示的是Provider,不是显示驱动,不直观,另外点取消也能看到连接string.
      

  5.   

    程序需要弹出ODBC配置窗口,并获得其设置的值(如选中的DSN等),如何实现?这个是你的要求啊。难道是弹出windows控制面板里的ODBC窗体么?那样我还不如直接去控制面板里设置呢。你程序还要用户自己在弹出框里设置ODBC么?还不如程序自动注册ODBC或者运行前要用户自己去控制面板设置下。还这么麻烦。搞不懂。