2016-11-07 16 views
1

私が書いているコードに問題があります。スタッフの詳細を記載したテーブルがあります。レコードを選択して右クリックすると、クリップボードに電子メールアドレスのコピーを作成しようとしています。私は、次のコードを持っている:私は、最後の行には、メールアドレスの欄にあるもの、それはただのコピー、私は自分のコードを実行すると、トリックを行うだろうforループの中に私のIF文を考えたがいるだろう文が動作しない場合AutoIT

#include <GUIConstantsEx.au3> 
#include <mssql.au3> 
#include <MsgBoxConstants.au3> 
#include <Array.au3> 
#include <WindowsConstants.au3> 
#include <AutoItConstants.au3> 
global $title = "E-Mail address lookup" 
global $name = InputBox($title,"Please type the name of the person you wish to find") 
global $sqlCon = _MSSQL_Con("server", "username", "password", "directory-plus") 
global $result = _MSSQL_GetRecord($sqlCon, "autoit_view","*", "WHERE cn LIKE '%" & StringStripWS($name,3) & "%'") 
if StringLen(StringStripWS($name,3)) < 1 then 
MsgBox(0, $title, "Name cannot be empty") 
Else 
Global $rset = UBound($result) - 1 
Global $ControlID = GUICreate($title, 500, 150) 
Global $idListview = GUICtrlCreateListView("Deparment|E-Mail Address|Name|Telephone Number", 10, 10, 480, 150) 
for $count = 1 to $rset step 1 
     GUICtrlCreateListViewItem($result[$count][0] & "|" & $result[$count][2] & "|" & $result[$count][1] & "|" & $result[$count][2], $idListview) 
     if MouseClick($MOUSE_CLICK_RIGHT)==1 Then 
      ClipPut($result[$count][2]) 
     EndIf 
Next 
GUISetState(@SW_SHOW) 
GUISetState() 

While 1 
Global $Msg = GUIGetMsg() 
Switch $Msg 
    Case -3, $ControlID 
     Exit 
EndSwitch 
WEnd 
EndIf 

を実際には、特定の行を右クリックしたときに電子メールアドレスをコピーしたいのですが、どうすればよいか分かりません。

答えて

1

コードには2つの大きな問題があります。 1つ目は、MouseClick()はマウスボタンが押されたことを確認せず、代わりにマウスボタンのクリックを送信することです。マウスボタンのクリックの送信は成功するため、MouseClick($ MOUSE_CLICK_RIGHT)== 1はtrueと評価されます。作成したリストビュー項目ごとに、電子メールアドレスをクリップボードに入れます。

第2の問題は、if文が間違った場所にあることです。これは、各リストビューアイテムを作成した直後に実行されます。

While 1 
Global $Msg = GUIGetMsg() 
Switch $Msg 
    Case -3, $ControlID 
    Exit 
    case $GUI_EVENT_SECONDARYDOWN 
    $selecteditem=StringSplit(GUICtrlRead(GUICtrlRead($idListview)),"|") 
    if @error=0 and $selecteditem[0]>1 Then 
    ClipPut($selecteditem[2]) 
    EndIf 
EndSwitch 
WEnd 
を次のようにする代わりに、あなたのwhile文を変更
関連する問題