packages feed

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}

-}