| Raphael Moll | 6b94c86 | 2014-09-05 15:54:04 -0700 | [diff] [blame] | 1 | /*
|
| 2 | * Copyright (C) 2014 The Android Open Source Project
|
| 3 | *
|
| 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
| 5 | * you may not use this file except in compliance with the License.
|
| 6 | * You may obtain a copy of the License at
|
| 7 | *
|
| 8 | * http://www.apache.org/licenses/LICENSE-2.0
|
| 9 | *
|
| 10 | * Unless required by applicable law or agreed to in writing, software
|
| 11 | * distributed under the License is distributed on an "AS IS" BASIS,
|
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 13 | * See the License for the specific language governing permissions and
|
| 14 | * limitations under the License.
|
| 15 | */
|
| 16 |
|
| 17 | #pragma once
|
| 18 |
|
| 19 | #include <atlpath.h> // ATL CPath
|
| 20 |
|
| 21 | // Global flag indicating whether this is running in debug mode (more printfs)
|
| 22 | extern bool gIsDebug;
|
| 23 | // Global flag indicating whether this is running in console mode or GUI.
|
| 24 | // In console mode, errors are written on the console; in GUI they use a MsgBox.
|
| 25 | extern bool gIsConsole;
|
| 26 |
|
| 27 | // Must be called by the application to initialize the app name used in error dialog boxes.
|
| 28 | // If NULL is used, fetches VERSIONINFO.FileDescription from resources if available.
|
| 29 | void initUtils(const TCHAR *appName);
|
| 30 |
|
| 31 | // Returns the app name set in initUtils
|
| 32 | CString getAppName();
|
| 33 |
|
| 34 | // Displays a message in an ok+info dialog box. Useful in console mode.
|
| 35 | void msgBox(const TCHAR* text, ...);
|
| 36 |
|
| 37 | // Displays GetLastError prefixed with a description in an error dialog box. Useful in console mode.
|
| 38 | void displayLastError(const TCHAR *description, ...);
|
| 39 |
|
| 40 | // Executes the command line. Does not wait for the program to finish.
|
| 41 | // The return code is from CreateProcess (0 means failure), not the running app.
|
| 42 | int execNoWait(const TCHAR *app, const TCHAR *params, const TCHAR *workDir);
|
| 43 |
|
| 44 | // Executes command, waits for completion and returns exit code.
|
| 45 | // As indicated in MSDN for CreateProcess, callers should double-quote the program name
|
| 46 | // e.g. cmd="\"c:\program files\myapp.exe\" arg1 arg2";
|
| 47 | int execWait(const TCHAR *cmd);
|
| 48 |
|
| 49 | bool getModuleDir(CPath *outDir);
|
| 50 |
|
| 51 | // Disables the FS redirection done by WOW64.
|
| 52 | // Because this runs as a 32-bit app, Windows automagically remaps some
|
| 53 | // folder under the hood (e.g. "Programs Files(x86)" is mapped as "Program Files").
|
| 54 | // This prevents the app from correctly searching for java.exe in these folders.
|
| 55 | // The registry is also remapped.
|
| 56 | PVOID disableWow64FsRedirection();
|
| 57 |
|
| 58 | // Reverts the redirection disabled in disableWow64FsRedirection.
|
| 59 | void revertWow64FsRedirection(PVOID oldWow64Value);
|