• 締切済み

APIを使用して別プログラムを印刷

VBよりPowerPointのウィンドウハンドルを取得し、SendMessageなどで印刷を開始したいと思っています。 PowerPointはツールバー・メニューバーが無効となっており、CTRL+Pも使用できません。メッセージを直接送ればできるのではないかと目論んでいます。 SendMessage以外でも良いのですが、VBよりPowerPointの印刷を開始する方法はないものでしょうか。

みんなの回答

  • sexy_2go
  • ベストアンサー率32% (10/31)
回答No.1

下記URLは過去に似たような事例にて解決されております。 ただSendMessageAPI以外の印刷方法となります。 http://okwave.jp/qa1683355.html

cip
質問者

補足

回答ありがとうございます。 参考ページを見ましたが、ちょっと違うように感じました。 「イベントを取得」ではなく、「イベントを発生させる」が近いと思います。 WM_PRINTSTART のようなメッセージをPowerPointに送りたいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 他アプリの操作(メニューバー)

    市販されているアプリケーションを自分で作成しているソフトで操作したいのですが、どの様に制御したらいいのか判りません。プログラムはVB6.0で作成しております。 したい事は他のアプリケーションでメニューバーの中の項目の 印刷項目を選択したいのですが、メニューバーのハンドルを取得 出来ず困っております。 そもそもメニューバーのハンドルって取得できるのでしょうか?

  • ウィンドウを終了させたい・・・

    いつもお世話になっています。 画面遷移時にあるメッセージウィンドウ(別exe)をVBから起動させ、遷移が終わった後にそのexeを終了させるプログラムを作っています。 プログラムの中身としては、 (1) Shell関数でexe(メッセージウィンドウ)を起動 (2) FindWindowで、起動しているexeのハンドルを取得 (3) 取得したハンドルに、SendMessageでexeを閉じるようにする(WM_CLOSEを使用)。 ・・・といったものです。 (1)と(2)はうまくいくのですが、最後のSendMessageがうまくいきません(>_<) 試しに(1)と(2)の後に、Do文の中で [1]SendMessageで起動したexeを終了させるようにする [2]FindWindowをして、ハンドルが0だったら、Exit Doする ・・・ようにプログラムしてみたところ、永久ループになってしまいました・・・。 他にも、SendMessageの代わりにShowWindowを使ってみましたが同じくダメでした・・・(T-T) ネットで調べていますが、他の方法が浮かびません。 どなたか、良い方法をご存じでしょうか?? よろしくお願いします!!

  • 別アプリの操作

    こんにちは。 以前、このサイトで同じような質問があったのですが、 VB.NETで作成したPGから別アプリのボタンを押すには、ボタンのオブジェクトハンドルを 取得し、SendMessageで実現できるとありました。 その方法でボタンのハンドルまでは取得できたのですが、コントロールIDの取得で0が 返ってきました。 Spy++で見たところ、コントロールIDが0でした。 コントロールIDを使用せずにオブジェクトハンドルだけ?で別アプリのボタンを押すことは できるのでしょうか? ちなみに別アプリとはAcrobat9です。 よろしくお願いします。

  • プログラムを組んでいる途中、行き詰ってしまったので質問させていただきま

    プログラムを組んでいる途中、行き詰ってしまったので質問させていただきます。 ボタンを左クリックしたらコモンダイアログを表示し、ファイル名を取得するものを作っていたのですが、ファイルを選択した後ボタンが押したままになってしまいます。 ボタンはサブクラス化をしてあります。(サブクラス化しないと上手くいっているため、原因はここだと思います。) 画面が切り替わると判断できるものがあれば、その中でボタンを離したことにすれば良いと考えたのですが、判断できるウィンドウメッセージが分かりません。 サブクラス化したボタンプロシージャの中身の一部 switch(Msg){  case WM_LBUTTONDOWN:   SendMessage(親ウィンドウのハンドル,Msg,wParam,lParam);  case /*ここに切り替わりを判断できるメッセージ*/:   SendMessage(親ウィンドウのハンドル,WM_LBUTTONUP,(省略),(省略));   break; ※とりあえず左クリックのみ対応と言うことでWM_LBUTTONUPになっています。 分かる方いましたら、お願いします。 環境:Windows 言語:C++(WinAPI使用)

  • WIN32APIアプリでツールバー/スステータスバーの表示切り替え

    VC++6.0のwin32sdkで、MFCのSDI標準テンプレートのようにメニューでツールバー,ステータスバーを切り替えるアプリケーションにしたいと思います。 以下のようなコードにしていますが、このままでは表示非表示を切り替えた場合、中央ウインドウのサイズが変更されません。 ドラッグして全体のサイズを変更すると中央メインウインドウも正常な表示になりますが、なにか中央のウインドウを再描画する処理が必要と思われます。その再描画処理についてご教示くださいますようお願いします。 1)ステータスバーの高さ,ツールバーの高さをグローバル変数にする 2)メニューからのメッセージでこのグローバル変数を表示(夫々のバーの高さ)、非表示(夫々のバーの高さ=0)を切り替える。 3)WndProcのWM_SIZEで中央メインウインドウをMoveMindowする [グローバル変数] ---------------------------------------------- static int bShow = 16;//ステータスバーの高さ(非表示は0) static int tbShow = 25;//ツールバーの高さ(非表示は0) ---------------------------------------------- [LRESULT CALLBACK WndProcの一部] ----------------------------------------------- case WM_SIZE: ...... MoveWindow(中央のハンドル, 0, tbShow, LOWORD(lp), HIWORD(lp)-tbShow-bShow, TRUE); break; -----------------------------------------------

  • VB.netでSendMessageを使用して電卓を閉じたい

    環境:Win XP,VB.net 2003 sendmessageを使用して電卓を閉じるプログラムを作成しているのですが、どうもあと少しでうまくいかないので質問させていただきます。 Dim hfwnd As Long hfwnd = FindWindowEx(0, 0, "SciCalc", "電卓") If FindWindowEx(0, 0, vbNullString, "電卓") Then MsgBox("電卓動いてます。") Call SendMessage(hfwnd, WM_CLOSE, 0&, 0&) end if この時点で電卓が開いているかどうかの判定はうまくいっています。 ですが、sendmessageのところでうまくいっておらず、hfwndに取得したウインドハンドルが代入されていない?と思いGetWindowTextでタイトル取得してみたところ空白でした。電卓をSendMessageを使用して終了させるにはどのようにしたら良いのでしょうか?

  • 別のアプリケーションにメッセージを送る事は可能?

    環境はWindowsです。 AとBという2つのアプリケーション(またはプログラム)が実行されてるとして、AからBへメッセージを送る事は可能でしょうか? 例えばEnumWindows関数でBのWindowハンドルを取得して、SendMessageやPostMessageを使うことはできますか?もしくは他に正しい方法はありますか?

  • 作成したフォーム(画面)をA4用紙に印刷したい

    VB2005 でフォーム(画面)をA4用紙に印刷したいのですが、どうしたら印刷できますでしょうか?印刷の仕方として、画面のメニューバーより“印刷”をクリックすると印刷ダイアログボックスが出て、印刷(P)ボタンをクリックすると、フォーム(画面)が印刷されるようにしたいです。どなたか知っている方教えて頂きたいのですが。よろしくお願いします。

  • メニューバーが無い時の印刷について

    Flashで作られたデータを見ていました。 この写真を印刷してもらえますかと言われましたが、メニューバーもツールバーも無い画面でどうしたら印刷できるのでしょうか。 宜しくお願い致します。

  • リモートPCで動作しているプロセスにWindowsメッセージを投げるこ

    リモートPCで動作しているプロセスにWindowsメッセージを投げることは可能でしょうか? 下記のようなコードで試してみたのですが、ASP.NETでリモートPCのプロセスを取得できています。 これらの中から目的のプロセスをプロセス名で特定し、MainWindowHandleプロパティでウィンドウハンドルを取得します。 これを利用してSendMessageで目的のウィンドウにメッセージを投げようとしていますが、pFoundWindowには0が入っています。 ちなみに目的のプロセスはAdmin権限で実行されていますが、他の権限で実行されているプロセスも同じようにウィンドウハンドルを取得できていません。 [C#] Process[] processes = Process.GetProcesses("servername”); //プロセスリスト取得 foreach (Process p in processes) { if (p.ProcessName == "target_process"){ //目的のプロセスであれば IntPtr pFoundWindow = p.MainWindowHandle; //メインウィンドウのハンドルを取得 SendMessage(pFoundWindow, msg, wParam, lParam); } MSDNには、MainWindowHandleはローカルPCで実行されているプロセスしか取得できないとありましたが、権限の設定等で取得できないのでしょうか? 通常、リモート接続では実行ユーザがNETWIORK SERVICEになるようですが、これをAdmin権限で実行できれば取得できそうな気がします。 これと同様のことをFindWindow関数を使ってもできるのですが、同じくリモートPCのプロセスではウィンドウハンドルを取得できません。 他に良い方法はありませんでしょうか? サーバーはWindows Server 2003 + IIS6.0です。