程序A的image在程序启动的时候,用loadfromfile('test.bmp')载入一个图片。没有加路径,程序直接找exe所在路径,因此找的到文件。但是,如果在程序B用
  ShellExecute(handle,'OPEN',PChar(sExePath),PChar(sParam),nil,SW_SHOWNORMAL);
打开程序A,会提示找不到文件?难道这样打开的程序,路径是程序B的路径???尤其讨厌的是,我在程序A的一个类里面有一个动态创建的image,打开exe程序本地路径的图片,如果用上述的shellexecute调用的话,我还得为这个类传递程序的路径???---------------------------------------
不知道,是我理解不对,还是方法不对。请大家指点一二.

解决方案 »

  1.   

    A提示找不到文件test.bmp吧?说的不太清楚呀;当A程序启动时,你把A的路径设置为当前路径不就行了吗?SetCurrentDirectory();
      

  2.   

    在程序B里面用语句
    ShellExecute(handle,'OPEN',PChar(sExePath),PChar(sParam),nil,SW_SHOWNORMAL);调用程序A,A提示找不到文件test.bmp
      

  3.   

    你给A赋上路径就行了:loadfromfile(GetCurrentDir+'\test.bmp')
      

  4.   

    to 楼上:
    呵呵,这个当然知道。看看我后面的描述“尤其讨厌的是,我在程序A的一个类里面有一个动态创建的image,打开exe程序本地路径的图片,如果用上述的shellexecute调用的话,我还得为这个类传递程序的路径???”
    这个就好麻烦啊。
      

  5.   

    shellexecute的参数是类似命令行的参数吧试试这样:在A的程序中添加成员
      AppDir:String;
    然后将你的Image改为动态加载:在FormCreate中加入:
      GetDir(0,AppDir);
      image1.picture.bitmap.loadfromfile(apppath+'aaa.bmp');
      

  6.   

    嗯,如果类里面有动态创建载入图片的呢?该不会把这个apppath传进去吧
      

  7.   

    你的ShellExecute方法有误
    有个参数
    ShellExecute(handle,'OPEN',PChar(sExePath),PChar(sParam),nil,SW_SHOWNORMAL);
    哪个NIL参数不能设置nil 
    设置成你A程序的路径就可以拉
      

  8.   

    楼上大哥:
    呵呵,可以了。多谢在USES段加入SHELLAPI,使用时如:
       ShellExecute(handle,'open','c:\myapp\myapp.exe','-s','',SW_SHOWNORMAL);
       第一个参数为父窗口句柄;
       第二个参数为打开方式(OPEN,PRINT两种);
       第三个参数为执行文件全路径;
       第四个参数为执行文件参数;
       第五个参数为执行文件开始运行时的初始目录;
       第六个参数为为执行文件运行方式(SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,
    SW_RESTORE,SW_SHOW,SW_SHOWDEFAULT,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED,
    SW_SHOWMINNOACTIVE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_SHOWNORMAL);
       具体请看帮助。另外,如果为字符串参数,其中包含变量或运算的必需用PCHAR()函数。
    ========================
    我也查到资料了。