質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1752閲覧

exeファイルを常に実行し続けたい

BASEBALL-Y

総合スコア67

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/05 14:31

編集2020/04/06 00:44

## 質問内容

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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/04/05 22:33

アクティブでないと実行が止まるのはどうやったらできますか?
otn

2020/04/06 00:24

普通は実行されていると思いますが、「実行し続けていない」と思った理由は何でしょうか? 何か特殊なプログラムなら、説明してください。
BASEBALL-Y

2020/04/06 00:37

Pythonで、キーボードを押すと音が出るような機能を使っています。 これをexe化して、実行したとき、他の作業をした途端、キーボードを押しても音が出なくなります。
otn

2020/04/06 00:39

キーボードを押したことをどうやって検知していますか?
BASEBALL-Y

2020/04/06 00:46

『msvcrt』を使って,キーボードが押されたことを検知しています.
BASEBALL-Y

2020/04/06 00:46

コードを追記しました.
Zuishin

2020/04/06 00:53 編集

アクティブにするということは、キーボードフォーカスを得るということです。押したキーはアクティブなアプリのところに届いています。これを横取りする方法は「windows グローバルキーフック」で調べると出てきます。まずグローバルキーフックが何を意味するか把握してみてください。 Python だとこんな風にするそうです。 https://www.skyarch.net/blog/?p=4812
guest

回答1

0

ベストアンサー

これだと、exe化しないでもバックグラウンドでキーを取れなかったのでは?

バックグラウンドでもキーを取るというのは、「キーロガー」という不正ソフト風の動きです。
(もちろん、自分で作って自分で使う分には問題ないですが)

具体的な方法は知らないので、「Python キーロガー Windows」とかでググってください。

あと、同じ処理を並べるのなく、1つの関数で出来るようにしましょう。
###追記:元のプログラムの単純改善

Python

1import msvcrt 2import time 3import os 4 5import winsound as ws 6 7def blind_touch(): 8 while True: 9 time.sleep(0.01) 10 if msvcrt.kbhit(): 11 kb = msvcrt.getch().decode() 12 print(kb) 13 if kb == "\r": 14 break 15 elif kb.isalpha(): 16 sound_name = f'alphabet01_{kb}_01.wav' 17 elif kb.isdigit(): 18 sound_name = f'num00{kb}_01.wav' 19 else: 20 continue 21 if os.path.exists(sound_name): 22 ws.PlaySound(sound_name,ws.SND_FILENAME) 23 24if __name__ == "__main__": 25 blind_touch()

投稿2020/04/06 00:53

編集2020/04/06 01:50
otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BASEBALL-Y

2020/04/06 01:56

otnさん. 回答していただき,ありがとうございます. また,改善のコード,ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問