1 /** 2 * The contents of this file are subject to the Mozilla Public License Version 1.1 3 * (the "License"); you may not use this file except in compliance with the License. 4 * You may obtain a copy of the License at http://www.mozilla.org/MPL/ 5 * Software distributed under the License is distributed on an "AS IS" basis, 6 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 7 * specific language governing rights and limitations under the License. 8 * 9 * The Original Code is "" Description: 10 * "" 11 * 12 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 13 * 2001. All Rights Reserved. 14 * 15 * Contributor(s): ______________________________________. 16 * 17 * Alternatively, the contents of this file may be used under the terms of the 18 * GNU General Public License (the "GPL"), in which case the provisions of the GPL are 19 * applicable instead of those above. If you wish to allow use of your version of this 20 * file only under the terms of the GPL and not to allow others to use your version 21 * of this file under the MPL, indicate your decision by deleting the provisions above 22 * and replace them with the notice and other provisions required by the GPL License. 23 * If you do not delete the provisions above, a recipient may use your version of 24 * this file under either the MPL or the GPL. 25 */ 26 package ca.uhn.hl7v2.testpanel; 27 28 import org.slf4j.Logger; 29 import org.slf4j.LoggerFactory; 30 31 import ca.uhn.hl7v2.testpanel.controller.Controller; 32 33 import com.sun.jna.Library; 34 import com.sun.jna.Native; 35 import com.sun.jna.NativeLong; 36 import com.sun.jna.WString; 37 import com.sun.jna.ptr.PointerByReference; 38 39 public class WindowsInitializer { 40 41 private static final Logger ourLog = LoggerFactory.getLogger(WindowsInitializer.class); 42 43 public static void setCurrentProcessExplicitAppUserModelID(final String appID) { 44 Shell32 s32 = (Shell32) Native.loadLibrary("shell32", Shell32.class); 45 if (s32.SetCurrentProcessExplicitAppUserModelID(new WString(appID)).longValue() != 0) { 46 ourLog.warn("unable to set current process explicit AppUserModelID to: " + appID); 47 } 48 } 49 50 public void run(final Controller theController) { 51 setCurrentProcessExplicitAppUserModelID(App.class.getName()); 52 } 53 54 55 private interface Shell32 extends Library 56 { 57 NativeLong GetCurrentProcessExplicitAppUserModelID(PointerByReference appID); 58 59 NativeLong SetCurrentProcessExplicitAppUserModelID(WString appID); 60 61 } 62 63 }