マクロとか、Webアプリとか、ゲームとか、SNSとか、企業HPとか、
プログラム言語とか、ブラウザとか、iPhoneアプリとか
助言ください(_ _ )
探検
初心者だけどプログラムを勉強していろいろ作りたい
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2012/05/02(水) 19:44:33.792uy
2012/05/02(水) 19:56:09.842012/05/02(水) 20:18:20.90
無理
絶対に無理
何をやろうとしても絶対に無理
プログラムは諦めろ
スタートするのに助言を求めた時点でもうダメだ
絶対に無理
何をやろうとしても絶対に無理
プログラムは諦めろ
スタートするのに助言を求めた時点でもうダメだ
41 ◆Ss1B4g5ts2
2012/05/02(水) 20:32:21.51 Rubyダウンロードしました。
2012/05/02(水) 20:48:42.42
次にPythonをインストールします
6uy
2012/05/02(水) 20:50:09.50 実行の仕方はわかるよな?それじゃまず
マクロを作るためにWinAPIからいくか
下をコピペして実行できるか確認
require "Win32API"
message = "This is a sample Windows message box generated using Win32API"
title = "Win32API from Ruby"
api = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
api.call(0,message,title,0)
マクロを作るためにWinAPIからいくか
下をコピペして実行できるか確認
require "Win32API"
message = "This is a sample Windows message box generated using Win32API"
title = "Win32API from Ruby"
api = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
api.call(0,message,title,0)
71 ◆Ss1B4g5ts2
2012/05/02(水) 21:01:55.29 This is a sample Windows message box generated using Win32API
とポップアップで出ました
とポップアップで出ました
8uy
2012/05/02(水) 21:11:45.31 ok、とりあえず指定座標をクリックさせるコードを書いてきた、左クリックしか出来ないがな
まずはこれを自力で解読したまえ
require 'Win32API'
SetCursorPos = Win32API.new('user32', 'SetCursorPos', %w(i i), 'i')
SendInput = Win32API.new("user32", "SendInput", %w(i p i), 'i')
INPUT_MOUSE = 0
MOUSEEVENTF_LEFTDOWN = 0x0002
MOUSEEVENTF_LEFTUP = 0x0004
def click wait = 1.0
mouseinput1 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0].pack('LllLLLL')
mouseinput2 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0].pack('LllLLLL')
input = mouseinput1 + mouseinput2
SendInput.call 2, input , mouseinput1.length
sleep wait
end
def mv x , y , wait = 1.0
SetCursorPos.call x , y
sleep wait
end
# ここからメイン-------------------
# 座標 x300 y300にマウスカーソルを移動
mv 300 , 300
#左クリックする
click
click
まずはこれを自力で解読したまえ
require 'Win32API'
SetCursorPos = Win32API.new('user32', 'SetCursorPos', %w(i i), 'i')
SendInput = Win32API.new("user32", "SendInput", %w(i p i), 'i')
INPUT_MOUSE = 0
MOUSEEVENTF_LEFTDOWN = 0x0002
MOUSEEVENTF_LEFTUP = 0x0004
def click wait = 1.0
mouseinput1 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0].pack('LllLLLL')
mouseinput2 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0].pack('LllLLLL')
input = mouseinput1 + mouseinput2
SendInput.call 2, input , mouseinput1.length
sleep wait
end
def mv x , y , wait = 1.0
SetCursorPos.call x , y
sleep wait
end
# ここからメイン-------------------
# 座標 x300 y300にマウスカーソルを移動
mv 300 , 300
#左クリックする
click
click
91 ◆Ss1B4g5ts2
2012/05/02(水) 22:09:33.13 全然読めない
0x0002とか0x0004って何?
SetCursorPosは座標でクリックしてるんだろうけど、SendInputって何をしてるの?
input = mouseinput1 + mouseinput2 ← なんで足してるの?
0x0002とか0x0004って何?
SetCursorPosは座標でクリックしてるんだろうけど、SendInputって何をしてるの?
input = mouseinput1 + mouseinput2 ← なんで足してるの?
10uy
2012/05/02(水) 22:19:32.87 >0x0002とか0x0004って何?
それは仮想キーコードとか、そういう類のあれだ
その辺りは検索して調べるしかない
ちなみに調べたところ右クリックは
0x0008と0x00010だったので、以下のように定義する
MOUSEEVENTF_RIGHTDOWN = 0x0008
MOUSEEVENTF_RIGHTUP = 0x00010
>SetCursorPosは座標でクリックしてるんだろうけど、SendInputって何をしてるの?
違うぞ
SetCursorPosは、マウスカーソルの座標を移動させるためのWinAPI関数だ
実際にマウスをクリックさせているのはSendInput
>input = mouseinput1 + mouseinput2 ← なんで足してるの?
マウスにはキーダウンとキーアップの二つの命令があり、
キーダウンだけしか処理をさせないと、動作がおかしくなる(マウスをクリックしたままの状態が続いてしまう)
だから
mouseinput1 でキーダウン
mouseinput2 でキーアップ
をさせる命令をつくり
SendInputに読ませている(一回のSendInput関数で2回処理をさせていると思えばいい、ちょっとこいつは変な関数だ)
input = mouseinput1 + mouseinput2 を input = mouseinput1 にして実行してみれば何かがわかるかもしれない
それは仮想キーコードとか、そういう類のあれだ
その辺りは検索して調べるしかない
ちなみに調べたところ右クリックは
0x0008と0x00010だったので、以下のように定義する
MOUSEEVENTF_RIGHTDOWN = 0x0008
MOUSEEVENTF_RIGHTUP = 0x00010
>SetCursorPosは座標でクリックしてるんだろうけど、SendInputって何をしてるの?
違うぞ
SetCursorPosは、マウスカーソルの座標を移動させるためのWinAPI関数だ
実際にマウスをクリックさせているのはSendInput
>input = mouseinput1 + mouseinput2 ← なんで足してるの?
マウスにはキーダウンとキーアップの二つの命令があり、
キーダウンだけしか処理をさせないと、動作がおかしくなる(マウスをクリックしたままの状態が続いてしまう)
だから
mouseinput1 でキーダウン
mouseinput2 でキーアップ
をさせる命令をつくり
SendInputに読ませている(一回のSendInput関数で2回処理をさせていると思えばいい、ちょっとこいつは変な関数だ)
input = mouseinput1 + mouseinput2 を input = mouseinput1 にして実行してみれば何かがわかるかもしれない
11uy
2012/05/02(水) 22:36:27.08 マクロにあと必要なのはあとキーボードだ
WinAPIからやるの面倒なので
俺はいつもwshを使ってやってしまってる
こんな感じ
require 'win32ole'
wsh = WIN32OLE.new('WScript.Shell')
wsh.Run"notepad.exe"
sleep 1
wsh.SendKeys "TESTtestabcdef"
WinAPIからやるの面倒なので
俺はいつもwshを使ってやってしまってる
こんな感じ
require 'win32ole'
wsh = WIN32OLE.new('WScript.Shell')
wsh.Run"notepad.exe"
sleep 1
wsh.SendKeys "TESTtestabcdef"
121 ◆Ss1B4g5ts2
2012/05/02(水) 22:42:57.60 mouseinput1 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0].pack('LllLLLL')
mouseinput2 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0].pack('LllLLLL')
input = mouseinput1 + mouseinput2
SendInput.call 2, input , mouseinput1.length
ここが分からない
特に上2行
input = mouseinput1 + mouseinput2は、1と2のイベントをセットにしたってイメージかな
SendInput.callは%w(i p i)と繋がっていて
2回のイベントを処理、input内の1と2の計2回を処理(ポインタ?)、lengthでサイズを引数にする(何のために?)
mouseinput2 = [INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0].pack('LllLLLL')
input = mouseinput1 + mouseinput2
SendInput.call 2, input , mouseinput1.length
ここが分からない
特に上2行
input = mouseinput1 + mouseinput2は、1と2のイベントをセットにしたってイメージかな
SendInput.callは%w(i p i)と繋がっていて
2回のイベントを処理、input内の1と2の計2回を処理(ポインタ?)、lengthでサイズを引数にする(何のために?)
131 ◆Ss1B4g5ts2
2012/05/02(水) 22:44:13.60 >>11
じぇんじぇんわかりましぇん||||
じぇんじぇんわかりましぇん||||
14uy
2012/05/02(水) 22:51:21.80 SendInputの仕様はここにあるけど
http://msdn.microsoft.com/ja-jp/library/cc411004.aspx
ようはWinAPIってC言語から使うことが想定されて作られているAPIなので
Rubyから使おうとするといろいろと気持ち悪い事になってしまうんだ
Cの構造体代わりに、Rubyの配列を渡す事になるからサイズをあわせる為にこうなる
lengthでサイズを引数にしているのは、
関数がそのように作られているから(WinAPIから大昔に作られたものだから昔の事情が色々とある)
解読しろっつったけど、ほんとのところあんま気にしないで動けばいいやって気持ちで書いていって
理解は後回しにしたほうが学習は早い
http://msdn.microsoft.com/ja-jp/library/cc411004.aspx
ようはWinAPIってC言語から使うことが想定されて作られているAPIなので
Rubyから使おうとするといろいろと気持ち悪い事になってしまうんだ
Cの構造体代わりに、Rubyの配列を渡す事になるからサイズをあわせる為にこうなる
lengthでサイズを引数にしているのは、
関数がそのように作られているから(WinAPIから大昔に作られたものだから昔の事情が色々とある)
解読しろっつったけど、ほんとのところあんま気にしないで動けばいいやって気持ちで書いていって
理解は後回しにしたほうが学習は早い
15uy
2012/05/02(水) 22:57:47.86 >>13
なんだと、
それは
Wsh(WindowsScriptHost)と言う
win32oleというのは、まぁ本当の事いうとWin32APIよりもう1ランク上の難易度の技術だ
wshの資料はこの辺りにある
http://msdn.microsoft.com/ja-jp/library/cc364423.aspx
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
しかし乗っているコードがvbsやjsなので
これらをRubyで書き直せる程度の能力が必要
wshも実は、Rubyから使うことは想定されておらず
vbsやjsの管轄だが、俺様はRubyしか教える気はないのでRubyからwshを使う
なんだと、
それは
Wsh(WindowsScriptHost)と言う
win32oleというのは、まぁ本当の事いうとWin32APIよりもう1ランク上の難易度の技術だ
wshの資料はこの辺りにある
http://msdn.microsoft.com/ja-jp/library/cc364423.aspx
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
しかし乗っているコードがvbsやjsなので
これらをRubyで書き直せる程度の能力が必要
wshも実は、Rubyから使うことは想定されておらず
vbsやjsの管轄だが、俺様はRubyしか教える気はないのでRubyからwshを使う
161 ◆Ss1B4g5ts2
2012/05/02(水) 23:01:35.7917uy
2012/05/02(水) 23:04:58.20 うむ、実行すると
メモ帖が起動され TESTtestabcdef とかかれるはず
wsh.Run"notepad.exe"
を消すと、メモ帖を起動せずに
今カーソルある場所に TESTtestabcdef とかかれる
日本語入力はちょっと面倒なんだけどね
メモ帖が起動され TESTtestabcdef とかかれるはず
wsh.Run"notepad.exe"
を消すと、メモ帖を起動せずに
今カーソルある場所に TESTtestabcdef とかかれる
日本語入力はちょっと面倒なんだけどね
181 ◆Ss1B4g5ts2
2012/05/02(水) 23:09:34.40 >>17
TESTtestabcdefと表示されなかったけど、sleap5秒にしてメモ帳にカーソル合わせたら表示された
これらと、更に右クリックと、ループを覚えたらそれっぽいマクロが作れるようになるのかな
TESTtestabcdefと表示されなかったけど、sleap5秒にしてメモ帳にカーソル合わせたら表示された
これらと、更に右クリックと、ループを覚えたらそれっぽいマクロが作れるようになるのかな
19uy
2012/05/02(水) 23:16:06.06 >>18
そうだね
これらをループとかほかのWinAPI等を調べて組み合わせて作る
とりあえず、エスケープキーが押されるまでループされるようなマクロでもかいてみた
require 'win32ole'
require 'win32api'
wsh = WIN32OLE.new('WScript.Shell')
wsh.Run"notepad.exe"
GetKeyState = Win32API.new('user32.dll', 'GetKeyState', %w(i), 'i')
VK_ESCAPE = 0x1B
def intrrupt
if GetKeyState.call( VK_ESCAPE ) < 0
puts :exit
exit
end
end
loop do
sleep 0.5
wsh.SendKeys "TEST"
intrrupt
end
そうだね
これらをループとかほかのWinAPI等を調べて組み合わせて作る
とりあえず、エスケープキーが押されるまでループされるようなマクロでもかいてみた
require 'win32ole'
require 'win32api'
wsh = WIN32OLE.new('WScript.Shell')
wsh.Run"notepad.exe"
GetKeyState = Win32API.new('user32.dll', 'GetKeyState', %w(i), 'i')
VK_ESCAPE = 0x1B
def intrrupt
if GetKeyState.call( VK_ESCAPE ) < 0
puts :exit
exit
end
end
loop do
sleep 0.5
wsh.SendKeys "TEST"
intrrupt
end
20 ◆Ss1B4g5ts2
2012/05/02(水) 23:20:12.02 CとC++は少しわかるんだけど、なんか全然違うなぁ
WinAPIが特殊なのか、Rubyが特殊なのか・・
WinAPIが特殊なのか、Rubyが特殊なのか・・
21uy
2012/05/02(水) 23:37:17.50 言語が作られた時代が違うからな
Rubyのほうが新しい
それにWinAPIは古い物だから、
関数の引数や戻り値がアホっぽい関数もあったりする
その関数を作った奴の頭の様子を察するしかない
本当なら、古いWinAPIより比較的新しい.NETってのを使ったほうがいいんだけど
.NETは、C#以外の言語から.NET使うのは大変だから
C#以外をやる時にWindowsであれこれやる時は大体WinAPIになる
まぁWinAPIでも慣れれば別に大丈夫
俺があと教えられるのはrubyでの簡単なゲーム作りくらい
暇があったらまたスレくるわ
Rubyのほうが新しい
それにWinAPIは古い物だから、
関数の引数や戻り値がアホっぽい関数もあったりする
その関数を作った奴の頭の様子を察するしかない
本当なら、古いWinAPIより比較的新しい.NETってのを使ったほうがいいんだけど
.NETは、C#以外の言語から.NET使うのは大変だから
C#以外をやる時にWindowsであれこれやる時は大体WinAPIになる
まぁWinAPIでも慣れれば別に大丈夫
俺があと教えられるのはrubyでの簡単なゲーム作りくらい
暇があったらまたスレくるわ
22 ◆Ss1B4g5ts2
2012/05/02(水) 23:45:32.34 はい、ありがとうございました
マクロはWinAPIね
今は消化しきれないけど、しばらくこれの勉強しようかな
マクロはWinAPIね
今は消化しきれないけど、しばらくこれの勉強しようかな
2012/05/03(木) 01:57:31.63
Ruby(大爆笑
Pythonが良いと最近聞いたから、スクリプト系だとPythonに興味持ってる
あと、こんなスレを見た
http://engawa.2ch.net/test/read.cgi/poverty/1335970660/
あと、こんなスレを見た
http://engawa.2ch.net/test/read.cgi/poverty/1335970660/
25デフォルトの名無しさん
2012/05/03(木) 07:39:58.51 Pythonのが楽しいぞ
あともうちょっと簡単なことやった方がいいんじゃなかろうか
あともうちょっと簡単なことやった方がいいんじゃなかろうか
2012/05/03(木) 09:48:43.10
いきなりマクロってかwひとり遊びww
27 ◆Ss1B4g5ts2
2012/05/03(木) 16:23:02.17 Pythonを勉強します
PythonからもWinAPI使えるみたいだし
ダイソンに似ててなんか革新的だし
PythonからもWinAPI使えるみたいだし
ダイソンに似ててなんか革新的だし
28片山博文MZボット ◆0lBZNi.Q7evd
2012/05/03(木) 16:44:14.16 ここから:
http://code.google.com/p/python-doc-ja/downloads/list
ファイル「python-doc-2.7ja1-b.chm」をダウンロードしろ。
Vista以降なら、ファイルを右クリックして「プロパティ」を
選んで、ブロックの解除を行う。
http://code.google.com/p/python-doc-ja/downloads/list
ファイル「python-doc-2.7ja1-b.chm」をダウンロードしろ。
Vista以降なら、ファイルを右クリックして「プロパティ」を
選んで、ブロックの解除を行う。
2012/05/03(木) 16:54:29.34
入門書を買う。
わからないところがあればネットで調べる。
それでも納得できないことがあれば人に聞く。
こうやって勉強してったほうがいいよ。 なんでもかんでも
「わからない。誰かに聞こう!」だとプログラミングは向いてない
わからないところがあればネットで調べる。
それでも納得できないことがあれば人に聞く。
こうやって勉強してったほうがいいよ。 なんでもかんでも
「わからない。誰かに聞こう!」だとプログラミングは向いてない
30片山博文MZボット ◆0lBZNi.Q7evd
2012/05/03(木) 17:23:42.15 できたら、「python-doc-2.7ja1-b.chm」をダブルクリックして
開け。目次に「Python チュートリアル」というのがあるから
それをクリック。ページの内容を読んで読み終わったら「次へ」を
クリックするのを繰り返す。
開け。目次に「Python チュートリアル」というのがあるから
それをクリック。ページの内容を読んで読み終わったら「次へ」を
クリックするのを繰り返す。
31片山博文MZボット ◆0lBZNi.Q7evd
2012/05/03(木) 17:33:20.95 「Python チュートリアル」を読み終えたら、ここから:
http://www.python.org/download/windows/
Windows用のPython環境「ActiveState ActivePython」
をダウンロード&インストール。
http://www.python.org/download/windows/
Windows用のPython環境「ActiveState ActivePython」
をダウンロード&インストール。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- クリスマスの「予定なし」54% [少考さん★]
- 地震 [Hitzeschleier★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- おさかなさんあつまれえ
- 茶ぁしばこうや···
- 【お漏らし】日銀、0.25%利上げへ [256556981]
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
