aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/WindowsEnv/Utils.hs
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2017-03-26 19:03:03 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2017-03-26 19:03:03 +0300
commitb20d44c618f370a1998c70dd5708d9bbe4ed1c80 (patch)
tree0ec7e019648955a77e70163e6becdb06e78ca823 /src/WindowsEnv/Utils.hs
parentput utility modules to bin/Utils/ (diff)
downloadwindows-env-b20d44c618f370a1998c70dd5708d9bbe4ed1c80.tar.gz
windows-env-b20d44c618f370a1998c70dd5708d9bbe4ed1c80.zip
rename directories
Diffstat (limited to 'src/WindowsEnv/Utils.hs')
-rw-r--r--src/WindowsEnv/Utils.hs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/WindowsEnv/Utils.hs b/src/WindowsEnv/Utils.hs
new file mode 100644
index 0000000..c852229
--- /dev/null
+++ b/src/WindowsEnv/Utils.hs
@@ -0,0 +1,30 @@
+-- |
+-- Copyright : (c) 2016 Egor Tensin <Egor.Tensin@gmail.com>
+-- License : MIT
+-- Maintainer : Egor.Tensin@gmail.com
+-- Stability : experimental
+-- Portability : Windows-only
+
+module WindowsEnv.Utils
+ ( notifyEnvironmentUpdate
+ ) where
+
+import Foreign.C.Types (CIntPtr(..))
+import qualified Graphics.Win32.GDI.Types as WinAPI
+import qualified Graphics.Win32.Message as WinAPI
+import qualified System.Win32.Types as WinAPI
+
+foreign import ccall "Windows.h SendNotifyMessageW"
+ c_SendNotifyMessage :: WinAPI.HWND -> WinAPI.WindowMessage -> WinAPI.WPARAM -> WinAPI.LPARAM -> IO WinAPI.LRESULT
+
+notifyEnvironmentUpdate :: IO ()
+notifyEnvironmentUpdate =
+ WinAPI.withTString "Environment" $ \lparamPtr -> do
+ let wparam = 0
+ let lparam = fromIntegral $ WinAPI.castPtrToUINTPtr lparamPtr
+ _ <- c_SendNotifyMessage allWindows messageCode wparam lparam
+ return ()
+ where
+ messageCode = WinAPI.wM_WININICHANGE
+ hWND_BROADCAST = WinAPI.castUINTPtrToPtr 0xffff
+ allWindows = hWND_BROADCAST