workflow-windows-0.0.0: sources/Workflow/Windows/Example.hs
{-# LANGUAGE OverloadedStrings, NegativeLiterals #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Workflow.Windows.Example where
import Workflow.Windows
import Workflow.Windows.Extra
import Data.StateVar
reverseClipboard = do
clipboard $~ reverse
moveCursorToTopLeft = do
cursor $= POINT 0 0
testVariables = do
putStrLn "\n- vars...\n"
reverseClipboard
print =<< get clipboard
moveCursorToTopLeft
print =<< get cursor
{-
stack build && stack exec workflow-windows-example
-}
testWorkflow = do
contents <- getClipboard
setClipboard (reverse contents)
print contents
sendChar 'c'
sendText "sendText"
pressKeyChord [VK_CONTROL] VK_A -- press "C-a"
openApplication "cmd.exe"
openUrl "http://google.com"
--clickMouseAt windowsMouse (POINT (maxBound `div` 2) minBound) 2 MOUSEEVENTF_LEFTDOWN MOUSEEVENTF_LEFTUP
clickMouseAt (POINT 800 10) 2 MOUSEEVENTF_LEFTDOWN MOUSEEVENTF_LEFTUP
scrollMouse MOUSEEVENTF_WHEEL 1 120 -- up (with my trackpad, "natural" scrolling disabled)
delayMilliseconds 1000
scrollMouse MOUSEEVENTF_WHEEL -1 60 -- down (with my trackpad, "natural" scrolling disabled)
testWindow s = do
putStrLn $ "\nwindowClass: " ++ s
w <- findWindow (aWindowClass s)
e <- c_GetLastError
putStr "GetLastError: "
print e
putStr "non-null: "
print $ not (isNull (getHWND w))
getWindowRectangle w >>= print
main = do
putStrLn "\nworkflow-windows-example...\n"
putStr "\ndebug Privileges:"
print =<< c_EnableDebugPriv -- doesnt seem to be necessary
testVariables
-- delayMilliseconds 4000
--testWorkflow
--pressKeyChord [] VK_VOLUME_MUTE
-- pressKeyChord [] VK_MEDIA_PLAY_PAUSE
-- pressKeyChord [] VK_MEDIA_PLAY_PAUSE
-- replicateM_ 2 $ pressKeyChord [VK_MENU] VK_F -- press "A-f"
-- traverse_ testWindow ["OpusApp", "Emacs", "ConsoleWindowClass", "Chrome_WidgetWin_1"]
-- "OpusApp" no, "Emacs" no, "ConsoleWindowClass" no, "Chrome_WidgetWin_1" yes -- (Window "" "Chrome_WidgetWin_1" "")
-- pressKeyChord [] VK_OEM_PLUS -- "="
-- pressKeyChord [VK_SHIFT] VK_OEM_PLUS -- "+"
{- when minimized, negs:
windowClass: Chrome_WidgetWin_1
non-null: True
RECT {leftRECT = -31992, topRECT = -31941, rightRECT = -31928, bottomRECT = -31877}
-}