说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于winexec的两个问题

编辑:说三道四文库 发布时间:2018-04-24 02:59
HTML文档下载 WORD文档下载 PDF文档下载
1。代码如下,发现winexec之后的语句并不能保证被执行
    winExec(Pchar('imp80 zhyb/zhyb file = c:\expdat.dmp fromuser = zhyb touser = zhyb '),sw_hide);
    dcon.connected:= false;
    dcon.connectionstring:= 'provider=MSDAORA.1;Password=zhyb;User ID=zhyb;Persist Security Info=True';
    dcon.connected:= true;
    dcom.commandText := 'create or replace procedure '
...............
    dcom.execute;
其中dcom.execute语句没有被执行

当我把winexec之后的语句放到一个buttonclick事件中后,语句被正确执行,猜测是winexec的执行机制所导致,请高手指教,谢谢

2。我用getdir取得的文件路径之中有空格:
getdir(0,S);   //S = c:\program files 
然后用getdir执行
winExec(Pchar('imp80 zhyb/zhyb file =' +S+'\expdat.dmp fromuser = zhyb touser = zhyb '),sw_hide); 
   winexec没有正确执行,不知道是否和空格有关,如何解决,请大侠指教
用ShellexeCute试一试。
WinExec is for 16_bit and it can't run in Windows NT,you should try CreateProcess(...),please refer to online help
请使用:CreateProcess函数
例如下面的程序可以判断自己启动的程序是否执行完毕!
        STARTUPINFO si;
        PROCESS_INFORMATION pi;

        si.cb = sizeof(STARTUPINFO);
        si.dwFlags = STARTF_USESHOWWINDOW;
        si.wShowWindow =  SW_SHOWDEFAULT;

        if(CreateProcess("c:\\windows\\notepad.exe",
                        NULL,NULL,NULL,FALSE,
                        CREATE_DEFAULT_ERROR_MODE,NULL,NULL,
                        &si,&pi))
        {
                WaitForSingleObject((HANDLE)pi.hProcess,INFINITE);
                ShowMessage("Success");
        }
        else
        {
                ShowMessage("Failure");
        } 
gz
有没有高手愿意正面解答我的问题呢?
一定给分的
有没有高手愿意正面解答我的问题呢?
一定给分的  

 
因为是异步执行
索引有时有问题
试试延时
sleep(x);
呵呵,长文件名用""括起来就不会有问题了.Windows使用空格来分离参数的.所以必须用""括起来.
谢谢了,最近都没有上网,所以没有给分,不好意思
luhongjun(过江项羽):
我用CreateProcess调用了一个notepad.exe,以前是成功过的,但现在好象是不行了
函数返回值总是0,我觉得我的程序好象没改变呀,不知那位大侠能指点一下,谢谢!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘