2016-10-19 8 views
0

私は請求を行っている医院で働いています。この仕事のために作られたプログラムは非常に基本的なものであり、バグに悩まされています。私は2つのプログラムを使用しました。一つは課金側、もう一つはチャート用でした。今、私のホットキーは誕生日と診療記録番号を請求側から取得し、チャート側に行き、その2つの事柄に基づいて患者を検索します(通常、MRNで十分でしょうが、エピックそれだけでは不十分です)患者を選択し、「Chart Review」をクリックして、サービスの日付を選択するのを待ちます。左クリックすると、課金側に戻り、情報をコピーすることができます。問題は時々患者が現れなかったことであり、私はこれを記録しなければならない。表示されていない場合は、クリックするグラフがなく、表示されていないことを再確認するために別の場所をクリックする必要があります。私はキーウェイトの分岐型が必要です。クリックすると、請求側にタブするか、Aキーか何かをクリックすると、予定と過去のタブをクリックして、請求書に戻って「型付きメモ」をクリックします。私は分岐部分の他にすべてを管理することができます。 Getkeystateステートメントが機能しないようで、キーウェイトとifステートメントを使用することはできません(明らかに)。ホットキーの途中でAHK分岐キーを押す

!D:: 
BlockInput, MouseMoveOff 
sleep 100 
Winactivate, Hyperspace 
sleep 100 
sendinput ^w 
sleep 300 
winactivate, Form billing 
sleep 300 
BlockInput, MouseMove 
mouseclick,, 400, 70 
BlockInput, MouseMove 
click 
sleep 200 
sendinput ^c 
sleep 400 
dob:=Clipboard 
sleep 400 
BlockInput, MouseMove 
mouseclick,, 385, 85 
BlockInput, MouseMove 
click 
sleep 200 
sendinput ^c 
WinActivate, Hyperspace 
sleep 400 
sendinput ^3 
sleep 400 
sendinput ^v 
sleep 400 
BlockInput, MouseMove 
mouseclick,, 200, 145 
sleep 400 
Clipboard:=dob 
sleep 400 
StringTrimLeft, dobyear, dob, 6 
sleep 50 
dobmathd:=A_YYYY-dobyear 
sleep 50 
StringTrimRight, dobmo, dob, 8 
sleep 50 
StringTrimRight, dobd, dob, 5 
sleep 50 
StringTrimLeft, dobday, dobd, 3 
sleep 50 
if (dobmo >= A_MM) and (dobday >= A_DD) 
{ 
dobmathd-- 
} 
sleep 50 
sendinput ^v 
sleep 200 
sendinput {Enter} 
sleep 200 
sendinput {Enter} 
sleep 1700 
BlockInput, MouseMove 
mouseclick,, 85, 235 
sleep 300 
BlockInput, MouseMoveOff 
;if (character = a) 
;{ 
;BlockInput, MouseMove 
;mouseclick,, 325, 40 
;sleep 200 
;mouseclick,, 60, 285 
;click 
;sleep 400 
;mouseclick,, 240, 435 
;sleep 2000 
;winactivate, Form billing 
;BlockInput, MouseMoveOff 
;return 
;} 
;if (
tooltip,%dobmathd% Years old, 415, 70 
keywait, LButton, D, T200 
sleep 200 
winactivate, Form billing 
return 

コメントした部分は私の最後の試みでしたが、私はしばらくの間試してみると本当のアイディアを見つけました。どんな助けもありがとう!

編集:「ここをクリックするとここをクリックするか、ここをクリックするとこのようになります」という文章が機能します。私は、Chart Reviewウィンドウのサイズと予定のツールバーボタンのサイズを取得できます。私は別のタスクのためにこれを試してきましたが、ここでうまくいくかもしれません。それにも助けていただければ幸いです!

編集: @Bob、実際には、遅く返事をして申し訳ありません、私は非常に短い長さのいくつかのkeywaitで小さな文をループすることが私のためにうまくいくことがわかりました。私は下に自分のコードを貼り付けます。 これは単なるスニペットなので、完全なコードではありません。場合

SendInput, {Enter} 
Sleep, 1800 
BlockInput, MouseMove 
MouseClick,, 85, 235 
Sleep, 300 
BlockInput, MouseMoveOff 
Sleep, 20 
Loop 
{ 
    KeyWait, LButton, D, T0.02 ;I've picked a chart, meaning they showed up for their appointment 
    If !ErrorLevel 
    { 
     Sleep, 400 
     BlockInput, MouseMoveOff 
     WinActivate, Form CMP 
     Return 
    } 
    KeyWait, Escape, D, T0.02 
    If !ErrorLevel 
     Return 
    KeyWait, ., D, T0.02 ;They do not appear to have shown up for their appointment, so check the appointment tab 
    If !ErrorLevel 
    { 
     BlockInput, MouseMove 
     MouseClick,, 315, 40 
     Sleep, 400 
     MouseClick,, 100, 285 
     Sleep, 1000 
     MouseClick,, 270, 440 
     Sleep, 300 
     BlockInput, MouseMoveOff 
     Loop 
     { 
      KeyWait, Y, D, T0.02 ;They did not show up for their appointment. Bill appropriately. 
      If !ErrorLevel 
      { 
       BlockInput, MouseMove 
       WinActivate, Form CMP 
       Sleep, 200 
       MouseClick,, 210, 260 
       Sleep, 200 
       MouseClick,, 100, 400 
       Sleep, 200 
       SendInput, No Show 
       Sleep, 200 
       WinActivate, Hyperspace 
       Sleep, 500 
       MouseClick,, 85, 235 
       Sleep 400 
       WinActivate, Form CMP 
       Sleep, 300 
       BlockInput, MouseMoveOff 
       Return 
      } 
      KeyWait, N, D, T0.02 ;Don't see a no show, re-check chart review. 
      If !ErrorLevel 
      { 
       BlockInput, MouseMove 
       MouseClick,, 85, 235 
       Sleep, 500 
       BlockInput, MouseMoveOff 
       KeyWait, LButton, D 
       Sleep, 400 
       WinActivate, Form CMP 
       BlockInput, MouseMoveOff      
       Return 
      } 
      KeyWait, Escape, D, T0.02 
      If !ErrorLevel 
       Return 
     } 
    } 
} 
+0

私の質問を投票するのは少し厳しいと思います。 – DarknessCalling

答えて

0

私もIに投げるのは良い考えかもしれません(keywaits

方法がありますと文は「虐待」L1VInputコマンドに使用することはできません)オプションを(わずかに限定された)KeyWaitのように動作させることができます。それはあなたの使用例のために働くはずです。

(...) 
Input,var,L1IV ; will act as KeyWait 
if (var="a") { 
    foo:=Round(Sqrt(1764)) 
    TrayTip,,The number is %foo% 
} 
else if (var="s") 
    MsgBox Sssnaaakess 
(...) 
関連する問題