strOpenFile := 'D:\...\1.txt';// 文件名较长,含中文
ShellExecute(Handle, 'open', 'Notepad.exe',Pchar(strOpenFile), nil, SW_SHOWNORMAL);通过测试发现传入的参数只有strOpenFile前面一部分。
在“运行”里打开一个长文件名时也是同样问题。 

解决方案 »

  1.   

    ShellExecute(
      hWnd: HWND;        {指定父窗口句柄}
      Operation: PChar;  {指定动作, 譬如: open、print}
      FileName: PChar;   {指定要打开的文件或程序}
      Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
      Directory: PChar;  {缺省目录}
      ShowCmd: Integer   {打开选项}
    ): HINST;            {执行成功会返回应用程序句柄; 如果这个值 <= 32, 表示执行错误}
      

  2.   


    你這個明顯用了  shortFileName  當然不行啊。 這必須是全稱的。SHELLEXECUTE是你的操作系統支持多長,它就OK
      

  3.   

    到空格就断了
    比如:'D:\Dir Dir\1.txt'
    在程序里得到的参数只有'D:\Dir'
      

  4.   

    路径名加上双引号
    '"D:\Dir Dir\1.txt"' 
    不知道delphi怎么写,c++应该是"\"D:\Dir Dir\1.txt\""
      

  5.   

    原来被空格分成几个参数了:
    比如:'D:\Dir Dir\1.txt'Param(1):'D:\Dir'
    Param(2):'Dir\1.txt'