반응형

 

오토핫키 listview의 Column 및 Low 의 리스트 내역을

클릭하면 데이터를 취득하는 스크립트입니다.

  

#SingleInstance,force
title:="listview"
Gui, Add, ListView, x12 y9 w450 h250  Grid HwndHLV1 gcolumn_data AltSubmit,num1|num2|num3|num4|num5|num6

Loop,5
	Lv_add(,A_index,A_index+1,A_index+2,A_index+3,A_index+4,A_index+5)
Gui, Show, x993 y397 h275 w474,% title
Return
column_data:
gui,submit,NoHide
click_Data:= A_EventInfo
   If (A_GuiEvent = "DoubleClick") {
      Column := LV_SubItemHitTest(HLV1)
			LV_GetText(text,click_Data,Column)
			msgbox,% Column " 열의 " click_Data " 행 데이터의 " text " 입니다"
	}
return


LV_SubitemHitTest(HLV) {
   Static LVM_SUBITEMHITTEST := 0x1039
   VarSetCapacity(POINT, 8, 0)
   DllCall("User32.dll\GetCursorPos", "Ptr", &POINT)
   DllCall("User32.dll\ScreenToClient", "Ptr", HLV, "Ptr", &POINT)
   VarSetCapacity(LVHITTESTINFO, 24, 0)
   NumPut(NumGet(POINT, 0, "Int"), LVHITTESTINFO, 0, "Int")
   NumPut(NumGet(POINT, 4, "Int"), LVHITTESTINFO, 4, "Int")
   SendMessage, LVM_SUBITEMHITTEST, 0, &LVHITTESTINFO, , ahk_id %HLV%
   If (ErrorLevel = -1)
      Return 0
   Subitem := NumGet(LVHITTESTINFO, 16, "Int") + 1
   Return Subitem
}

return
GuiClose:
ExitApp
return

 

listview.ahk
0.00MB

 

 

각 "행" , "열" 의 위치를 더블클릭하면
행과 열의 넘버와 , 데이터를 확인할 수 있습니다.

 

 

또한, 특정 칼럼만 이벤트를 주고싶을 때는

#SingleInstance,force
title:="listview"
Gui, Add, ListView, x12 y9 w450 h250  Grid HwndHLV1 gcolumn_data AltSubmit,num1|num2|num3|num4|num5|num6

Loop,5
	Lv_add(,A_index,A_index+1,A_index+2,A_index+3,A_index+4,A_index+5)
Gui, Show, x993 y397 h275 w474,% title
Return
column_data:
gui,submit,NoHide
click_Data:= A_EventInfo
   If (A_GuiEvent = "DoubleClick") {
      Column := LV_SubItemHitTest(HLV1)
		if(Column = "2"){
			LV_GetText(text,click_Data,Column)
			msgbox,% Column " 열의 " click_Data " 행 데이터의 " text " 입니다"
		}
	}
return


LV_SubitemHitTest(HLV) {
   Static LVM_SUBITEMHITTEST := 0x1039
   VarSetCapacity(POINT, 8, 0)
   DllCall("User32.dll\GetCursorPos", "Ptr", &POINT)
   DllCall("User32.dll\ScreenToClient", "Ptr", HLV, "Ptr", &POINT)
   VarSetCapacity(LVHITTESTINFO, 24, 0)
   NumPut(NumGet(POINT, 0, "Int"), LVHITTESTINFO, 0, "Int")
   NumPut(NumGet(POINT, 4, "Int"), LVHITTESTINFO, 4, "Int")
   SendMessage, LVM_SUBITEMHITTEST, 0, &LVHITTESTINFO, , ahk_id %HLV%
   If (ErrorLevel = -1)
      Return 0
   Subitem := NumGet(LVHITTESTINFO, 16, "Int") + 1
   Return Subitem
}

return
GuiClose:
ExitApp
return

 

if(column = 2) 의 조건문을 달아 주면됩니다

이는 칼럼의 두번째 클릭하면 선택한 위치의데이터가 출력 됩니다.  

 

 

 

 

 

 

반응형

+ Recent posts