diff options
author | patthoyts <patthoyts> | 2005-02-28 16:27:36 +0000 |
---|---|---|
committer | patthoyts <patthoyts> | 2005-02-28 16:27:36 +0000 |
commit | 39fb6169f61b128b1b5573e99a2afd19f0ba382d (patch) | |
tree | ee468e1b5e723dc7fb4cb40ce2eb95187419fc5c /jim-win32.c | |
parent | a11037ca6adfe358d1ea7adaf6d143200da59f32 (diff) | |
download | jimtcl-39fb6169f61b128b1b5573e99a2afd19f0ba382d.zip jimtcl-39fb6169f61b128b1b5573e99a2afd19f0ba382d.tar.gz jimtcl-39fb6169f61b128b1b5573e99a2afd19f0ba382d.tar.bz2 |
A few more APIs and a macro for declaring them.
Diffstat (limited to 'jim-win32.c')
-rw-r--r-- | jim-win32.c | 82 |
1 files changed, 71 insertions, 11 deletions
diff --git a/jim-win32.c b/jim-win32.c index e640b0d..44a8656 100644 --- a/jim-win32.c +++ b/jim-win32.c @@ -1,6 +1,6 @@ /* WIN32 extension * - * Copyright(C) 2005 Pat Thoyts. + * Copyright (C) 2005 Pat Thoyts <patthoyts@users.sourceforge.net> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -138,6 +138,57 @@ Win32_CloseWindow(Jim_Interp *interp, int objc, Jim_Obj **objv) return JIM_OK; } +static int +Win32_GetActiveWindow(Jim_Interp *interp, int objc, Jim_Obj **objv) +{ + Jim_SetResult(interp, Jim_NewIntObj(interp, (DWORD)GetActiveWindow())); + return JIM_OK; +} + +static int +Win32_SetActiveWindow(Jim_Interp *interp, int objc, Jim_Obj **objv) +{ + HWND hwnd, old; + int r = JIM_OK; + + if (objc != 2) { + Jim_WrongNumArgs(interp, 1, objv, "windowHandle"); + return JIM_ERR; + } + r = Jim_GetLong(interp, objv[1], (long *)&hwnd); + if (r == JIM_OK) { + old = SetActiveWindow(hwnd); + if (old == NULL) { + Jim_SetResult(interp, + Win32ErrorObj(interp, "SetActiveWindow", GetLastError())); + r = JIM_ERR; + } else { + Jim_SetResult(interp, Jim_NewIntObj(interp, (long)old)); + } + } + return r; +} + +static int +Win32_SetForegroundWindow(Jim_Interp *interp, int objc, Jim_Obj **objv) +{ + HWND hwnd; + int r = JIM_OK; + + if (objc != 2) { + Jim_WrongNumArgs(interp, 1, objv, "windowHandle"); + return JIM_ERR; + } + r = Jim_GetLong(interp, objv[1], (long *)&hwnd); + if (r == JIM_OK) { + if (!SetForegroundWindow(hwnd)) { + Jim_SetResult(interp, + Win32ErrorObj(interp, "SetForegroundWindow", GetLastError())); + r = JIM_ERR; + } + } + return r; +} static int Win32_Beep(Jim_Interp *interp, int objc, Jim_Obj **objv) @@ -276,19 +327,28 @@ Win32_SetComputerName(Jim_Interp *interp, int objc, Jim_Obj **objv) /* ---------------------------------------------------------------------- */ + int Jim_OnLoad(Jim_Interp *interp) { Jim_InitExtension(interp, "1.0"); - Jim_CreateCommand(interp, "win32.ShellExecute", Win32_ShellExecute, NULL); - Jim_CreateCommand(interp, "win32.FindWindow", Win32_FindWindow, NULL); - Jim_CreateCommand(interp, "win32.CloseWindow", Win32_CloseWindow, NULL); - Jim_CreateCommand(interp, "win32.Beep", Win32_Beep, NULL); - Jim_CreateCommand(interp, "win32.GetComputerName", Win32_GetComputerName, NULL); - Jim_CreateCommand(interp, "win32.SetComputerName", Win32_SetComputerName, NULL); - Jim_CreateCommand(interp, "win32.GetUserName", Win32_GetUserName, NULL); - Jim_CreateCommand(interp, "win32.GetVersion", Win32_GetVersion, NULL); - Jim_CreateCommand(interp, "win32.GetTickCount", Win32_GetTickCount, NULL); - Jim_CreateCommand(interp, "win32.GetSystemTime", Win32_GetSystemTime, NULL); + +#define CMD(name) \ + Jim_CreateCommand(interp, "win32." #name , Win32_ ## name , NULL) + + CMD(ShellExecute); + CMD(FindWindow); + CMD(CloseWindow); + CMD(GetActiveWindow); + CMD(SetActiveWindow); + CMD(SetForegroundWindow); + CMD(Beep); + CMD(GetComputerName); + CMD(SetComputerName); + CMD(GetUserName); + CMD(GetVersion); + CMD(GetTickCount); + CMD(GetSystemTime); + return JIM_OK; } |