2011-09-15 14 views
1

私に割り当てられた1つのバグを修正するのに問題があります。それは、パラメータに記載されたpdfファイルを印刷することになっていました。 ShellExecute()関数を使用してドキュメントを直接印刷します。 私の質問は、文書ファイルと見なされるPDFファイルですか? ShellExecute()は2 w/cを返しています。無効なパスまたはファイル名を意味することがわかりました。なぜそれが2を返したのか疑問に思っています。私はまた、 "オープン"アクションを試みますが、まだ何もしません。 本当にあなたの助けに感謝します。shell32.dll; ShellExecute()がPowerbuilderで実行されていない11.5

+0

本当にあなたが探しているファイルは本当ですか? PBのFileOpenを使用してPDFを開き、何が起こるかを見てください。また、PDFファイル用のハンドラ(通常はAcrobat Reader)を用意してください。最後に、コードを投稿したいと思うかもしれません。問題を簡単に解決できるようにしました。 – eran

答えて

1

Unicodeバージョン(ShellExecuteW)とないANSIバージョン(ShellExecuteA)を使用するようにしてください:あなたはこれらのために処理後のShellExecuteのためのあなたのリターンコードは、あるかを判断することができるはずです。ここ

FUNCTION long ShellExecute (uint ihwnd,string lpszOp,string 
    lpszFile,string lpszParams, string lpszDir,int wShowCmd) 
    LIBRARY "Shell32.dll" ALIAS FOR "ShellExecuteW" 
+0

ありがとう、これは動作します! – icing1018

0

を何らかの問題の原因となります。これはおそらく過剰ですが、あなたが捕まえたいものを決めることができます。

私はPBプロジェクトで同様の問題を扱っています。シェル経由でPDFを実行すると、WindowsエクスプローラでPDFファイルをダブルクリックするのと同じことが実行されます。 PDF用にファイルの関連付けが設定されている場合、デフォルトのプログラムを使用してPDFが開きます。 .docファイルでshell executeを実行すると、ほとんどの場合、ファイルはWordで開かれます。関連がない場合、例外31、ファイルの関連付けはありません。

WHEN 0 THEN txt = "The operating system is out of memory or resources.". 
WHEN 2 THEN txt = "The specified file was not found". 
WHEN 3 THEN txt = "The specified path was not found.". 
WHEN 5 THEN txt = "Windows 95 only: The operating system denied " 
        + "access to the specified file". 
WHEN 8 THEN txt = "Windows 95 only: There was not enough memory to " 
        + "complete the operation.". 
WHEN 10 THEN txt = "Wrong Windows version". 
WHEN 11 THEN txt = "The .EXE file is invalid (non-Win32 .EXE or " 
        + "error in .EXE image).". 
WHEN 12 THEN txt = "Application was designed for a different operating system". 
WHEN 13 THEN txt = "Application was designed for MS-DOS 4.0". 
WHEN 15 THEN txt = "Attempt to load a real-mode program". 
WHEN 16 THEN txt = "Attempt to load a second instance of " 
        + "an application with non-readonly data segments". 
WHEN 19 THEN txt = "Attempt to load a compressed application file". 
WHEN 20 THEN txt = "Dynamic-link library (DLL) file failure". 
WHEN 26 THEN txt = "A sharing violation occurred.". 
WHEN 27 THEN txt = "The filename association is incomplete or invalid.". 
WHEN 28 THEN txt = "The DDE transaction could not be completed " 
        + "because the request timed out.". 
WHEN 29 THEN txt = "The DDE transaction failed.". 
WHEN 30 THEN txt = "The DDE transaction could not be completed because " 
        + "other DDE transactions were being processed.". 
WHEN 31 THEN txt = "There is no application associated with " 
       + "the given filename extension.". 
WHEN 32 THEN txt = "Windows 95 only: The specified dynamic-link " 
       + "library was not found.". 
OTHERWISE txt = "undocumented". 
関連する問題