2016-09-05 5 views
1

私はLinuxアプリケーションをWindowsに移植していますが、実行可能ファイルはプライマリとセカンダリの両方で表示する必要があります。 Linuxの場合Windows 7/10 - アプリケーションを別のディスプレイで起動する

どのようにこのことができますその#!/ binに/ shスクリプトを介して行わ、何か

ようdisplay_start_dualheadは800 480 DVI 1024×768 24 輸出screen_main = $ LVDS 輸出screen_secondary = $ DVI

をLVDS Windowsでexe1を起動し、モニター2でexe1を起動し、exe2をmonitor 2で起動しますか?

答えて

1

プロセスの作成はSTARTUPINFO構造体を渡されCreateProcess APIを介して実行されます。この構造は、最初の可視性と位置情報を起動したプロセスに渡すことを可能にします。プロセスが初期ウィンドウを作成して表示するときに使用することを意図しています。

startコマンドで最大化または最小化されたウィンドウを起動するように指示することはできますが、各モニターの座標に位置指定フィールドを入力するコマンドラインツールはありません。

それでも、モニタを列挙してこれらのフィールドを埋め込むアプリケーションを作成するのは簡単な作業です。これは、アプリケーションがこれらのフィールドを無視してウィンドウを直接配置することがわかります。

1

はこれを試してみてください:Windows上

function void showOnMonitor1() 
{ 
    Screen[] sc; 
    sc = Screen.AllScreens; 
    //get all the screen width and heights 
    Form2 f = new Form2(); 
    f.FormBorderStyle = FormBorderStyle.None; 
    f.Left = sc[0].Bounds.Width; 
    f.Top = sc[0].Bounds.Height; 
    f.StartPosition = FormStartPosition.Manual; 
    f.Location = sc[0].Bounds.Location; 
    Point p = new Point(sc[0].Bounds.Location.X, sc[0].Bounds.Location.Y); 
    f.Location = p; 
    f.WindowState = FormWindowState.Maximized; 
    f.Show(); 
} 



function void showOnMonitor2() 
{ 
    Screen[] sc; 
    sc = Screen.AllScreens; 
    //get all the screen width and heights 
    Form2 f = new Form2(); 
    f.FormBorderStyle = FormBorderStyle.None; 
    f.Left = sc[1].Bounds.Width; 
    f.Top = sc[1].Bounds.Height; 
    f.StartPosition = FormStartPosition.Manual; 
    f.Location = sc[1].Bounds.Location; 
    Point p = new Point(sc[1].Bounds.Location.X, sc[1].Bounds.Location.Y); 
    f.Location = p; 
    f.WindowState = FormWindowState.Maximized; 
    f.Show(); 
} 

OR

if (System.Windows.Forms.SystemInformation.MonitorCount != 1) 
{ 
      Form form2 = new Form(); 
      form2.Left = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width + 1; 
      form2.Top = 0; 
      form2.ShowDialog(); 
} 
関連する問題