Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

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);
		}
	}
}