太古の昔から、ほとんどのWebブラウザーは、Webブラウザーの実行可能ファイルを実行した場合、たとえばiexplore.exe file:/c:/temp/file
を実行するか、IShellDocView
インターフェースを介してローカルファイルを開くことができました。私は、Microsoft Edgeを使用して、Windows 10の自分のプログラム内からこれを実行しようとしていますが、その方法を知りません。
実行可能ファイルは完全に文書化されていないように見えますが、/?に応答しません。または/ helpを使用し、パスに関係なく単にクラッシュします。パスが変更される可能性があるため、この実行可能ファイルを直接呼び出す正しいアプローチではない可能性があります。
C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe <whatever>
Windowsに代わりに呼び出すことができるAPIがあり、おそらく現在の既定のブラウザーではない場合でもEdgeを開きますか?
それがデフォルトのブラウザである場合、Win32 Shell-API ShellExecute
を介して自分がやりたいことができると思います。ただし、特定のWebテストタスクを自動化するために、別のブラウザーをデフォルトとして設定していても、Edgeで何かを起動できるようにしたいと考えています。
Edge用のプログラムインターフェイスまたはAPIはありますか?この質問のために、これをCで記述したいとしますが、これは使用している言語に関係なく同じAPIである必要があるため、この質問Cにはタグを付けませんでした。
プログラムで実行する方法がない場合、使用してMicrosoftEdgeまたはMicrosoftEdgeCP実行可能ファイルに渡すことができるコマンドライン引数はありますか?
これは現在サポートされていませんが、チームはオプションとして評価しています。当分の間、Edgeでリソースを開く最も簡単な方法は、Microsoft-Edge:
プロトコルハンドラ。たとえば、Microsoft-Edge: http://stackoverflow.comを実行して、EdgeでStack Overflowを開くことができます。
以下に、たとえばEdgeでPDFを開く方法を示します。
クラスの上部に次のヘッダーを追加します。
[DllImport("Shell32.dll")]
public static extern int ShellExecuteA(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirecotry, int nShowCmd);
呼び出し方法の例を次に示します。
ShellExecuteA(System.IntPtr.Zero, "open", @"Shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge", "C:\MyFile.pdf", null, 10);
これは他の種類のファイルにもうまく適用されると思います。
これは私のシステムで動作します:
共有を作成し、自分にアクセス権を付与します
簡単な例として、Microsoft Edgeで開きます:file:////bookmark.html
hostname Powershellコマンドを使用してホスト名を取得できます。コンピューターでファイルエクスプローラーを使用して「ネットワーク」を開くと、共有しているすべてのディレクトリを確認できます。
必ずしも満足のいく答えではありませんが、私が必要とするものに役立ちます。
https://github.com/MicrosoftEdge/Edge-launcher からツールを取得します
MicrosoftEdgeLauncher file:///C:/Users/me/Documents/homepage.html
以下はローカルファイルで機能し、クエリ(?
)およびフラグメント(#
)URIで。
ローカルHTMLファイルでのWinAPI/ShellAPIの例:
ShellExecute(
NULL,
NULL,
_T("Shell:Appsfolder\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge"),
_T("file:///c:/temp/test.html?page=1#anchor-1"),
NULL,
SW_SHOWNORMAL);