- - PR -
VB.NETでShellExecuteExを使用する
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-11-10 13:19
APIの使い方を書いておきます。
Declare Function GetProfileString Lib "Kernel32.dll" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer) As Integer Dim Temp As String Dim RC As Integer Dim P1 As Integer, P2 As Integer Temp = Space(255) RC = GetProfileString("windows", "device", "", Temp, 255) If RC = 0 Then 'デフォルトのプリンタが無いのでここでエラー処理 End If P1 = InStr(Temp, ",") P2 = InStr(P1 + 1, Temp, ",") printernameはLeft(Temp, P1 - 1)で,drivernameはMid(Temp, P1 + 1, P2 - P1 - 1)でそれぞれ取得できます。 時間があれば試してみて下さい。 | ||||||||
|
投稿日時: 2003-11-10 14:31
KeroKeroさん、ありがとうございます。
AcrobatReaderのコマンドラインパラメータでの 自動印刷も是非試してみたいです。 実は自動印刷パフォーマンスに対しての要望が厳しい為、 導入コスト、パフォーマンス、セキュリティ、保守に優れたものを 幾つかリストアップし御客様に提示する必要があるのです。 現在も自動印刷ソフトを試しています。 ブラウザ(IE5.5 SP2以上推奨)にActiveXを実装し ファイルをURL指定することで自動印刷が開始されるとういう代物です。 ブラウザを起動するのでプロセスを終了する必要があり、 Jubeiさんからのご返答で解決しましたAcrobatReder同様にしたところ、 今度はIEで問題が発生しました。 >引数有りのStartメソッドはstaticなんですね。 staticでないと思うのですが。 毎度申し訳ございませんが、宜しくお願い致します。 ----------source---------- Private Sub PdfPrint(ByVal Url As String) Dim myProcess As New Process() Try myProcess.StartInfo.FileName = Url myProcess.StartInfo.Verb = "Open" myProcess.StartInfo.CreateNoWindow = False myProcess.Start() myProcess.WaitForExit(5000)'''エラー箇所 Catch e As Exception MsgBox(e.Message) Finally myProcess.Kill()''''''''''''''エラー箇所 End Try End Sub '※エラー箇所の内容は"このオブジェクトに関連付けられているプロセスはありません。"です。 -------------------------- | ||||||||
|
投稿日時: 2003-11-10 15:37
えっ?? うちのドキュメントがおかしいのかなぁ。。 SDKドキュメント 【Process.Start メソッド (ProcessStartInfo) [C#]】のページ。 ms-help://MS.NETFrameworkSDKv1.1.JA/cpref/html/frlrfsystemdiagnosticsprocessclassstarttopic2.htm そういえば、つい最近公開されたドキュメントアップデートをしたので、 そこでおかしくなっているのかも知れませんね。 元に戻さないといけないのかなぁ。 #日経で10万円近く出して購入したリファレンスセットも確認しておこうっと。 いずれにせよ、私のコメントは、基本的にこの間違ったSDKドキュメントを ベースにしているので、これからは私の発言は参考にしないほうがいいかも しれませんよ(^^ゞ ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2003-11-10 15:55
Jubeiさんご返答ありがとうございます。
>えっ?? >うちのドキュメントがおかしいのかなぁ。。 こちらの間違いかもしれないので再度ドキュメント確認します。 >いずれにせよ、私のコメントは、基本的にこの間違ったSDKドキュメントを >ベースにしているので、これからは私の発言は参考にしないほうがいいかも >しれませんよ(^^ゞ そんなことありませんよ。いつも心底助かっております。 これからも宜しくお願いします。 しかし、なぜIEは駄目なのかなぁ。 | ||||||||
|
投稿日時: 2003-11-10 16:32
お二人の言葉の認識が違っているだけでは? jubeiさんのおっしゃっているのはstatic(C#)であり、 VB.NETで言うところのSharedの意味かと思います。 ProcessクラスのStartメソッドでProcessStartInfoクラスを引数に取るものは、 static(C#)(静的)/Shared(VB.NET)(共有)なメソッドです。 [ メッセージ編集済み 編集者: よねKEN 編集日時 2003-11-10 16:31 ] | ||||||||
|
投稿日時: 2003-11-10 18:00
こんにちわ。諸農です。
ありゃりゃ。失礼しましたm(__)m ご助言ありがとうございます。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2003-11-11 09:42
こんにちわ。諸農です。
先の発言では失礼しました。お許しください。
との事なので、「HasExited」で判定してみてはいかがでしょうか。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2003-11-11 11:08
なんとなく、別のオーバーロードのものを見てしまっていただけのような気がしないでもないです… |