Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Open Multiple Excel Files on Multiple Monitors

Description
This function takes a list of excel files, and tries to open one on each monitor.
Language
C#.net
Minimum Version
Created By
Thomas Malloch (BFS)
Contributors
-
Date Created
Sep 29, 2014
Date Last Modified
Oct 3, 2014

Scripted Function (Macro) Code

using System;
using System.Drawing;

// The 'windowHandle' parameter will contain the window handle for the:
//   - Active window when run by hotkey
//   - Window Location target when run by a Window Location rule
//   - TitleBar Button owner when run by a TitleBar Button
//   - Jump List owner when run from a Taskbar Jump List
//   - Currently focused window if none of these match
public static class DisplayFusionFunction
{
	public static void Run(IntPtr windowHandle)
	{
		//a list of excel files to open
		string[] excelFiles = 
		{
			"excelFile1.xlsx",
			"excelFile2.xlsx",
			"excelFile3.xlsx"
		};
		
		//get the monitors connected to the system
		uint[] monitors = BFS.Monitor.GetMonitorIDs();
		
		//if we failed to get the monitors, exit the function
		if (monitors.Length == 0)
			return;
			
		//loop through the files
		for (int i = 0; i < excelFiles.Length; i++)
		{
			//get the excel file
			string excelFile = excelFiles[i];
			
			//get the monitor
			uint monitor = monitors[i % monitors.Length];
			
			//start excel with the specified file
			uint appId = BFS.Application.Start("C:\\Program Files (x86)\\Microsoft Office\\Office15\\EXCEL.EXE", excelFile);
			
			//get the main window of excel
			IntPtr excelWindow = BFS.Application.GetMainWindowByAppID(appId);
			
			//if we failed to get the excel window, continue to open the files and ignore this intance
			if(excelWindow == IntPtr.Zero)
				continue;
				
			//move the excel window to the specified monitor
			BFS.Window.MoveToMonitor(monitor, excelWindow);
		}
	}
}