程序需要弹出ODBC配置窗口,并获得其设置的值(如选中的DSN等),如何实现?
解决方案 »
- 请高人帮翻译C语言的CRC校验码delphi代码
- 求 report machine 的详细中文教程!!!!!!!!!!!!!
- 高手,请教啊
- Delphi工程的结构问题?(将工程分解成一个EXE文件和几个DLL文件)
- 问:用WISE installation如何打包DELPHI写的MIS软件
- 怎么得到当前活动的Form对象?
- 动态设置报表字段,动态汇总,急得火烧眉毛~
- 如何取得汉字的区位码呢?
- 怎么在delphi中使flash的控件的右键菜单无效,且加上自已的popup菜单啊?
- 我要将多个WORD文档的内容合并到一个WORD文档中该怎样实现????
- 为什么对TcxDBButtonEdit控件扩展中不能重写OnChange事件???
- 用ADO连接ACCESS数据库时跟我要用户和密码,我的数据库就设置了密码,没有用户啊,请问怎么连???
不过也不是不能做
1 运行odbcad32 //打开ODBC配置窗口 winexce('odbcad32.exe.SW_SHOWNORMAL);
2 HOOK这窗口 截取改窗口的关闭消息
3 findwindow 找到这窗口
4 findwindowex 找到DSN列表控件的句柄
5 读出所有DSN名称
然后开始设置DSN
设置完以后点确定会退出该窗口 会触发HOOK
此时再去读取所有DSN名称
和一开始得到的DSN列表比较一下 得到新增加的DSN的名称 呵呵 我没做过~ 纯粹纸上谈兵
1 运行odbcad32 //打开ODBC配置窗口 winexec('odbcad32.exe.SW_SHOWNORMAL);
2 定时findwindow 如果DSN设置窗口没了
就读取注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
看看有没什么新增的DSN 就行了
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了哈哈!
to yeweimian1(我是哈哈乐) : 这个窗口显示的是Provider,不是显示驱动,不直观,另外点取消也能看到连接string.