回答編集履歴
2
見直しキャンペーン中
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Windows限定です。すべて貫通するので移動ができません。
|
2
2
|
ざっと試した限りは動いてそうですが、何か問題があるかもしれません。
|
3
3
|
|
4
|
-
`jna-5.6.0.jar`・`jna-platform-5.6.0.jar`を、エディタにドロップするなりして
|
4
|
+
`jna-5.6.0.jar`・`jna-platform-5.6.0.jar`を、エディタにドロップするなりして使えるようにしておきます。
|
5
5
|
[java-native-access/jna: Java Native Access](https://github.com/java-native-access/jna)
|
6
6
|
```Processing
|
7
7
|
import processing.awt.PSurfaceAWT;
|
1
見直しキャンペーン中
test
CHANGED
@@ -1,133 +1,63 @@
|
|
1
|
-
Windows限定です。
|
2
|
-
|
3
|
-
すべて貫通するので移動ができません。
|
1
|
+
Windows限定です。すべて貫通するので移動ができません。
|
4
|
-
|
5
2
|
ざっと試した限りは動いてそうですが、何か問題があるかもしれません。
|
6
3
|
|
7
|
-
|
8
|
-
|
9
|
-
`jna-5.6.0.jar`
|
10
|
-
|
11
|
-
`jna-platform-5.6.0.jar`
|
4
|
+
`jna-5.6.0.jar`・`jna-platform-5.6.0.jar`を、エディタにドロップするなりして、使えるようにしておきます。
|
12
|
-
|
13
5
|
[java-native-access/jna: Java Native Access](https://github.com/java-native-access/jna)
|
14
|
-
|
15
|
-
をエディタにドロップするなりして、使えるようにしておきます。
|
16
|
-
|
17
|
-
|
18
|
-
|
19
6
|
```Processing
|
20
|
-
|
21
7
|
import processing.awt.PSurfaceAWT;
|
22
8
|
|
23
|
-
|
24
|
-
|
25
9
|
import java.awt.Component;
|
26
|
-
|
27
10
|
import java.awt.Frame;
|
28
11
|
|
29
|
-
|
30
|
-
|
31
12
|
import com.sun.jna.Native;
|
32
|
-
|
33
13
|
import com.sun.jna.platform.win32.User32;
|
34
|
-
|
35
14
|
import com.sun.jna.platform.win32.WinDef;
|
36
|
-
|
37
15
|
import com.sun.jna.platform.win32.WinUser;
|
38
16
|
|
39
|
-
|
40
|
-
|
41
17
|
void setup() {
|
42
|
-
|
43
18
|
size(300, 150);
|
44
|
-
|
45
19
|
frameRate(1);
|
46
|
-
|
47
20
|
stroke(255);
|
48
|
-
|
49
21
|
textSize(72);
|
50
22
|
|
51
|
-
|
52
|
-
|
53
23
|
PSurfaceAWT awtSurface = (PSurfaceAWT)surface;
|
54
|
-
|
55
24
|
PSurfaceAWT.SmoothCanvas smoothCanvas = (PSurfaceAWT.SmoothCanvas)awtSurface.getNative();
|
56
|
-
|
57
25
|
Frame frame = smoothCanvas.getFrame();
|
58
26
|
|
59
|
-
|
60
|
-
|
61
27
|
frame.removeNotify();
|
62
|
-
|
63
28
|
frame.setSize(width, height);
|
64
|
-
|
65
29
|
frame.setAlwaysOnTop(true);
|
66
|
-
|
67
30
|
frame.setUndecorated(true);
|
68
|
-
|
69
31
|
frame.setOpacity(0.5f);
|
70
|
-
|
71
32
|
frame.addNotify();
|
72
33
|
|
73
|
-
|
74
|
-
|
75
34
|
setTransparent(frame);
|
76
|
-
|
77
35
|
}
|
78
36
|
|
79
|
-
|
80
|
-
|
81
37
|
void draw() {
|
82
|
-
|
83
38
|
background(0);
|
84
|
-
|
85
39
|
if (second() % 2 == 0)
|
86
|
-
|
87
40
|
text(nf(hour(), 2) + ":" + nf(minute(), 2), 50, 100);
|
88
|
-
|
89
41
|
else
|
90
|
-
|
91
42
|
text(nf(hour(), 2) + " " + nf(minute(), 2), 50, 100);
|
92
|
-
|
93
43
|
}
|
94
44
|
|
95
|
-
|
96
|
-
|
97
45
|
// [swing - Java: Making a window click-through (including text/images) - Stack Overflow](https://stackoverflow.com/questions/11217660/java-making-a-window-click-through-including-text-images)
|
98
|
-
|
99
46
|
private static void setTransparent(Component w) {
|
100
|
-
|
101
47
|
WinDef.HWND hwnd = getHWnd(w);
|
102
|
-
|
103
48
|
int wl = User32.INSTANCE.GetWindowLong(hwnd, WinUser.GWL_EXSTYLE);
|
104
|
-
|
105
49
|
wl = wl | WinUser.WS_EX_LAYERED | WinUser.WS_EX_TRANSPARENT;
|
106
|
-
|
107
50
|
User32.INSTANCE.SetWindowLong(hwnd, WinUser.GWL_EXSTYLE, wl);
|
108
|
-
|
109
51
|
}
|
110
52
|
|
111
|
-
|
112
|
-
|
113
53
|
private static WinDef.HWND getHWnd(Component w) {
|
114
|
-
|
115
54
|
WinDef.HWND hwnd = new WinDef.HWND();
|
116
|
-
|
117
55
|
hwnd.setPointer(Native.getComponentPointer(w));
|
118
|
-
|
119
56
|
return hwnd;
|
120
|
-
|
121
57
|
}
|
122
|
-
|
123
58
|
```
|
124
59
|
|
125
|
-
|
126
|
-
|
127
60
|
参考
|
128
|
-
|
129
61
|
[swing - Java: Making a window click-through (including text/images) - Stack Overflow](https://stackoverflow.com/questions/11217660/java-making-a-window-click-through-including-text-images)
|
130
62
|
|
131
|
-
|
132
|
-
|
133
63
|
![アプリ画像](70cd3cd8a82781325388f852af28d903.png)
|