回答編集履歴

2

見直しキャンペーン中

2023/08/12 14:44

投稿

TN8001
TN8001

スコア9862

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

見直しキャンペーン中

2023/08/12 14:43

投稿

TN8001
TN8001

スコア9862

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)