none
【Office2013】読み取り専用を開く方法について RRS feed

  • 質問

  • お世話になっております。
    Office2013でのPowerPointファイルについての質問です。
    C#(.NET Framework 3.5)とWin32 APIを利用して以下の操作を行うプログラムを作成しました。

    ・書き込みパスワードを設定しているppt(pptx)ファイルを非表示で開く。
    ・書き込みパスワード入力ダイアログで「読み取り専用(R)」を選択する。
    ・開いたppt(pptx)ファイル内の情報を読み取る。

    プログラムを実行するWindowsにインストールされたOfficeが2010の場合は、
    書き込みパスワード入力ダイアログが#32770(ダイアログ)のため、
    FindWindowEx(...)を使用して書き込みパスワード入力ダイアログ内のButtonオブジェクトのIntPtrを取得できます。

    プログラムを実行するWindowsにインストールされたOfficeが2013の場合は、
    書き込みパスワード入力ダイアログがNUIDialogのため、
    FindWindowEx(...)を使用して書き込みパスワード入力ダイアログ内のButtonオブジェクトのIntPtrを取得できません。
    (そもそもMicrosoftSpy++で確認してもダイアログ内のButton単体を取得できません。)

    C#、Win32 API、Office2013を使用して、書き込みパスワードが設定されているppt(pptx)ファイルを読み取り専用で開く方法をご教示いただけませんでしょうか。
    確認した環境は以下です。(どちらとも上記の現象が発生します)
    ①OS:Win8.1
    ②OS:Windows Server 2012R2
    2016年12月21日 6:31

回答

  • FindWindowExを使って、パスワード入力ウィンドウ内にあるEditコントロールは見つけられますでしょうか?
    Editコントロールに対して、下記のようにEnterキーのコマンドを送ってみてはどうでしょうか?

    EditコントロールのウィンドウハンドルをhEditとした場合、
    SendMessage(hEdit, WM_KEYDOWN, VK_RETURN, 0);
    SendMessage(hEdit, WM_KEYUP, VK_RETURN, 0);

    上記の方法でもOSやOfficeのバージョン、仕様が変わったとき動作しなくなることがあります。
    2016年12月21日 7:13

すべての返信