私は microsoft/azuredatastudio github リポジトリで作業していますが、これは主に vscode からフォークされています。コマンド ライン処理を拡張して、ウィンドウの再利用パラメーターを処理し、サーバー接続を -r と共に渡すと、指定された接続が開かれるようにしようとしています。現在のコマンド ライン処理サービスは、Workbench.initServices の src\vs\workbench\electron-browser\workbench.ts によって読み込まれます。
electron-main と workbench\electron-browser の両方に表示され、新しいコマンド ライン引数でアプリが再利用されていることを通知するために変更または活用できるプラットフォーム提供のサービスはありますか?
src\vs\code\electron-main\launch.ts で定義されている LaunchService が、引数を取得してウィンドウを開くか再利用する役割を担っているように見えますが、LaunchService からの通知をマーシャリングする方法が明確ではありません。ワークベンチによってロードされるサービスに渡ります。
2019 年 2 月 12 日更新: src\vs\code\electron-main\windows.ts にこの関数に相当するものを追加する必要があるようです
private doOpenFilesInExistingWindow(configuration: IOpenConfiguration, window: ICodeWindow, filesToOpen: IPath[], filesToCreate: IPath[], filesToDiff: IPath[], filesToWait: IPathsToWaitFor): ICodeWindow {
window.focus(); // make sure window has focus
window.ready().then(readyWindow => {
const termProgram = configuration.userEnv ? configuration.userEnv['TERM_PROGRAM'] : void 0;
readyWindow.send('vscode:openFiles', { filesToOpen, filesToCreate, filesToDiff, filesToWait, termProgram });
});
return window;
}
'ads:openconnection' のような新しいメッセージがあります。次に、メッセージの処理方法を確認します。