## 質問内容
Pythonで作ったものをexe化して実行しているのですが,
exeファイルの画面がメインでないときも実行し続ける方法は無いでしょうか?
お手数をおかけしますが,回答のほどよろしくお願い致します.
コード
Python
1#キー取得のためのライブラリ 2import msvcrt 3 4import time 5 6import sys 7 8#import wave 9 10#wave形式の音声を扱うためのライブラリ 11import winsound as ws 12 13 14#----------------------------------------------- 15#音を出すための関数(ローマ字) 16def a(): 17 sound_name = 'alphabet01_a_01.wav' 18 ws.PlaySound(sound_name,ws.SND_FILENAME) 19 20def b(): 21 sound_name = 'alphabet01_b_01.wav' 22 ws.PlaySound(sound_name,ws.SND_FILENAME) 23 24def c(): 25 sound_name = 'alphabet01_c_01.wav' 26 ws.PlaySound(sound_name,ws.SND_FILENAME) 27 28def d(): 29 sound_name = 'alphabet01_d_01.wav' 30 ws.PlaySound(sound_name,ws.SND_FILENAME) 31 32def e(): 33 sound_name = 'alphabet01_e_01.wav' 34 ws.PlaySound(sound_name,ws.SND_FILENAME) 35 36def f(): 37 sound_name = 'alphabet01_f_01.wav' 38 ws.PlaySound(sound_name,ws.SND_FILENAME) 39 40def g(): 41 sound_name = 'alphabet01_g_01.wav' 42 ws.PlaySound(sound_name,ws.SND_FILENAME) 43 44def h(): 45 sound_name = 'alphabet01_h_01.wav' 46 ws.PlaySound(sound_name,ws.SND_FILENAME) 47 48def i(): 49 sound_name = 'alphabet01_i_01.wav' 50 ws.PlaySound(sound_name,ws.SND_FILENAME) 51 52def j(): 53 sound_name = 'alphabet01_j_01.wav' 54 ws.PlaySound(sound_name,ws.SND_FILENAME) 55 56def k(): 57 sound_name = 'alphabet01_k_01.wav' 58 ws.PlaySound(sound_name,ws.SND_FILENAME) 59 60def l(): 61 sound_name = 'alphabet01_l_01.wav' 62 ws.PlaySound(sound_name,ws.SND_FILENAME) 63 64def m(): 65 sound_name = 'alphabet01_m_01.wav' 66 ws.PlaySound(sound_name,ws.SND_FILENAME) 67 68def n(): 69 sound_name = 'alphabet01_n_01.wav' 70 ws.PlaySound(sound_name,ws.SND_FILENAME) 71 72def o(): 73 sound_name = 'alphabet01_o_01.wav' 74 ws.PlaySound(sound_name,ws.SND_FILENAME) 75 76def p(): 77 sound_name = 'alphabet01_p_01.wav' 78 ws.PlaySound(sound_name,ws.SND_FILENAME) 79 80def q(): 81 sound_name = 'alphabet01_q_01.wav' 82 ws.PlaySound(sound_name,ws.SND_FILENAME) 83 84def r(): 85 sound_name = 'alphabet01_r_01.wav' 86 ws.PlaySound(sound_name,ws.SND_FILENAME) 87 88def s(): 89 sound_name = 'alphabet01_s_01.wav' 90 ws.PlaySound(sound_name,ws.SND_FILENAME) 91 92def t(): 93 sound_name = 'alphabet01_t_01.wav' 94 ws.PlaySound(sound_name,ws.SND_FILENAME) 95 96def u(): 97 sound_name = 'alphabet01_u_01.wav' 98 ws.PlaySound(sound_name,ws.SND_FILENAME) 99 100def v(): 101 sound_name = 'alphabet01_v_01.wav' 102 ws.PlaySound(sound_name,ws.SND_FILENAME) 103 104def w(): 105 sound_name = 'alphabet01_w_01.wav' 106 ws.PlaySound(sound_name,ws.SND_FILENAME) 107 108def x(): 109 sound_name = 'alphabet01_x_01.wav' 110 ws.PlaySound(sound_name,ws.SND_FILENAME) 111 112def y(): 113 sound_name = 'alphabet01_y_01.wav' 114 ws.PlaySound(sound_name,ws.SND_FILENAME) 115 116def z(): 117 sound_name = 'alphabet01_z_01.wav' 118 ws.PlaySound(sound_name,ws.SND_FILENAME) 119 120#----------------------------------------------- 121#音を出すための関数(数字) 122 123def zero(): 124 sound_name = 'num000_01.wav' 125 ws.PlaySound(sound_name,ws.SND_FILENAME) 126 127def one(): 128 sound_name = 'num001_01.wav' 129 ws.PlaySound(sound_name,ws.SND_FILENAME) 130 131def two(): 132 sound_name = 'num002_01.wav' 133 ws.PlaySound(sound_name,ws.SND_FILENAME) 134 135def three(): 136 sound_name = 'num003_01.wav' 137 ws.PlaySound(sound_name,ws.SND_FILENAME) 138 139def four(): 140 sound_name = 'num004_01.wav' 141 ws.PlaySound(sound_name,ws.SND_FILENAME) 142 143def five(): 144 sound_name = 'num005_01.wav' 145 ws.PlaySound(sound_name,ws.SND_FILENAME) 146 147def six(): 148 sound_name = 'num006_01.wav' 149 ws.PlaySound(sound_name,ws.SND_FILENAME) 150 151def seven(): 152 sound_name = 'num007_01.wav' 153 ws.PlaySound(sound_name,ws.SND_FILENAME) 154 155def eight(): 156 sound_name = 'num008_01.wav' 157 ws.PlaySound(sound_name,ws.SND_FILENAME) 158 159def nine(): 160 sound_name = 'num009_01.wav' 161 ws.PlaySound(sound_name,ws.SND_FILENAME) 162#----------------------------------------------- 163 164 165 166 167#メインとなる関数 168def blind_touch(): 169 170 while True: 171 172 time.sleep(0.01) 173 174 #キーが押されているか 175 if msvcrt.kbhit(): 176 177 #押されていれば,キーを取得する 178 kb = msvcrt.getch() 179 180 print(kb) 181 182 if kb.decode() == "a": 183 184 a() 185 186 elif kb.decode() == "b": 187 188 b() 189 190 elif kb.decode() == "c": 191 192 c() 193 194 elif kb.decode() == "d": 195 196 d() 197 198 elif kb.decode() == "e": 199 200 e() 201 202 elif kb.decode() == "f": 203 204 f() 205 206 elif kb.decode() == "g": 207 208 g() 209 210 elif kb.decode() == "h": 211 212 h() 213 214 elif kb.decode() == "i": 215 216 i() 217 218 elif kb.decode() == "j": 219 220 j() 221 222 elif kb.decode() == "k": 223 224 k() 225 226 elif kb.decode() == "l": 227 228 l() 229 230 elif kb.decode() == "m": 231 232 m() 233 234 elif kb.decode() == "n": 235 236 n() 237 238 elif kb.decode() == "o": 239 240 o() 241 242 elif kb.decode() == "p": 243 244 p() 245 246 elif kb.decode() == "q": 247 248 q() 249 250 elif kb.decode() == "r": 251 252 r() 253 254 elif kb.decode() == "s": 255 256 s() 257 258 elif kb.decode() == "t": 259 260 t() 261 262 elif kb.decode() == "u": 263 264 u() 265 266 elif kb.decode() == "v": 267 268 v() 269 270 elif kb.decode() == "w": 271 272 w() 273 274 elif kb.decode() == "x": 275 276 x() 277 278 elif kb.decode() == "y": 279 280 y() 281 282 elif kb.decode() == "z": 283 284 z() 285 286 elif kb.decode() == "0": 287 288 zero() 289 290 elif kb.decode() == "1": 291 292 one() 293 294 elif kb.decode() == "2": 295 296 two() 297 298 elif kb.decode() == "3": 299 300 three() 301 302 elif kb.decode() == "4": 303 304 four() 305 306 elif kb.decode() == "5": 307 308 five() 309 310 elif kb.decode() == "6": 311 312 six() 313 314 elif kb.decode() == "7": 315 316 seven() 317 318 elif kb.decode() == "8": 319 320 eight() 321 322 elif kb.decode() == "9": 323 324 nine() 325 326 327 328 #Enterが押されたら終了 329 if kb.decode() == "\r": 330 331 sys.exit() 332 333 334 335 336 337 338#コマンドプロンプトで実行 339if __name__ == "__main__": 340 341 blind_touch()
アクティブでないと実行が止まるのはどうやったらできますか?
普通は実行されていると思いますが、「実行し続けていない」と思った理由は何でしょうか?
何か特殊なプログラムなら、説明してください。
Pythonで、キーボードを押すと音が出るような機能を使っています。
これをexe化して、実行したとき、他の作業をした途端、キーボードを押しても音が出なくなります。
キーボードを押したことをどうやって検知していますか?
『msvcrt』を使って,キーボードが押されたことを検知しています.
コードを追記しました.
アクティブにするということは、キーボードフォーカスを得るということです。押したキーはアクティブなアプリのところに届いています。これを横取りする方法は「windows グローバルキーフック」で調べると出てきます。まずグローバルキーフックが何を意味するか把握してみてください。
Python だとこんな風にするそうです。
https://www.skyarch.net/blog/?p=4812
回答1件
あなたの回答
tips
プレビュー