1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
!
-
|
|
|
|
|
-
|
|
|
|
|
!
|
#uselib "shell32"
#func DragAcceptFiles "DragAcceptFiles" int, int
#func DragQueryFile "DragQueryFileA" int, int, int, int
#func DragQueryPoint "DragQueryPoint" int,int
#func DragFinish "DragFinish" int
#uselib "KERNEL32.DLL"
#func global GlobalAlloc "GlobalAlloc" sptr,sptr
#func global GlobalLock "GlobalLock" sptr
#func global GlobalUnlock "GlobalUnlock" sptr
#uselib "user32.dll"
#func global PostMessageA "PostMessageA" sptr,sptr,sptr,sptr
#define global GMEM_ZEROINIT $00000040 #define global WM_DROPFILES $00000233 #define global PostMessage PostMessageA
#module
#deffunc autodrop int p1,str p2,int p3,int p4,int p5
c1=20 + strlen(p2)*4 GlobalAlloc GMEM_ZEROINIT,c1 hMem=stat GlobalLock hMem p=stat dupptr DropFiles,p,c1 DropFiles.0=20 DropFiles.1=p3 DropFiles.2=p4 DropFiles.3=1
if p5=0{
DropFiles.4=1
cnvstow DropFiles.5,p2
}else{
DropFiles.4=1 s3=0 s1=p2 repeat strlen(p2)
s2=strmid(s1,cnt,1) poke s3,0,s2 memcpy DropFiles.5,s3,1,cnt*2 memset DropFiles.5,0,1,cnt*2+1 locnt=cnt
loop
memset DropFiles.5,0,1,locnt*2+2 }
PostMessage p1,WM_DROPFILES,hMem,0 GlobalUnlock hMem return 1
#global
title "ファイルをドロップできます"
font msgothic,11
oncmd gosub *dropfiles,WM_DROPFILES DragAcceptFiles hwnd, 1
autodrop hwnd,dir_exe+"/sample/demo/JP6GIRL.BMP",123,456,0
stop
*dropfiles
pos cx,0
dim point,2
sdim path,512
DragQueryPoint wparam, varptr(point)
DragQueryFile wparam, 0, varptr (path), 512
dupptr copy,wparam,4 mes "ハンドルの中身\t"+copy
mes "ファイルパス\t"+path
mes "カーソル位置\t"+point(0)+" "+point(1)
mes "---------------------------------------------------------------------------------"
if copy>100{
dupptr copy2,copy,80 mes "通常 16進数 10進数 上位文字コード 下位文字コード UnicodeOR文字コード配列"
foreach copy2
mes ""+copy2(cnt)+" "+strf("%x",copy2(cnt))+" "+strf("%c",copy2(cnt) >> 16)+" "+strf("%c",copy2(cnt) & 0xffff)+" "+cnvwtos(copy2(cnt))
loop
}else{
dupptr copy2,varptr(copy),80 mes "通常 16進数 10進数 上位文字コード 下位文字コード UnicodeOR文字コード配列"
foreach copy2
mes ""+copy2(cnt)+" "+strf("%x",copy2(cnt))+" "+strf("%c",copy2(cnt) >> 16)+" "+strf("%c",copy2(cnt) & 0xffff)+" "+cnvwtos(copy2(cnt))
loop
}
DragFinish wparam
cx += 200
return
|