🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1608閲覧

【素人】カーソルを下げ続ける方法

newaa

総合スコア3

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

0クリップ

投稿2020/11/28 05:18

編集2020/11/28 06:43

発生している問題・エラーメッセージ

プログラミング素人です。 C#で常駐型のマウスカーソルを下げ続けるプログラムを作りたいのですが何から始めればよいのでしょうか。 visual Studioを使用しています。 【条件】 ・左クリックだけを押しても動作せず、右クリックを押している状態で左クリックを押すと動作する ・x軸とy軸の移動距離を変更できる ・クリックを解除するとマウスカーソルの移動も停止します。 ソフト起動 ↓ 添付画像のウィンドウを表示 ↓ x軸y軸の移動距離または速度を選択 ↓ on ↓ 右クリックと左クリックを同時に押すと下がり続ける and 左クリックだけでは動作しない ↓ クリック解除 ↓ 移動停止 ```![イメージ説明](9333f7ca81ce79080d59b6b6d11ff1e1.png)
TN8001👍を押しています

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

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

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

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

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

Zuishin

2020/11/28 06:04

カーソルには複数の意味があります。それをしようと思った動機から詳しく説明した方が話が伝わりやすく、回答も正確なものになると思います。
newaa

2020/11/28 06:21

ありがとうございます。追記させていただきました。
m.ts10806

2020/11/28 06:22

>【素人】 要件と関係ないので「初心者アイコン」を質問につけるにとどめてください。 あと、ざっくりしすぎてて分かりません。調べて何も出ないのでしょうか。 何一つ手を付けられないのなら、まだそこに手を付ける段階ではないです。 本気の素人なら何も作れません。まず入門してください。
newaa

2020/11/28 06:25

申し訳ないです。出直します。
Zuishin

2020/11/28 06:27 編集

画像で示されているのがあなたの作りたいもので、X 成分と Y 成分を指定でき、ON ボタンを押してウィンドウを消した後に適当な場所でマウスの右ボタンを押しながら左ボタンをクリックすると、後は手を離しても X と Y で指定された方向にマウスカーソルが動き続けるということですか?
newaa

2020/11/28 06:29

そうです。説明不足で申し訳ないです。
m.ts10806

2020/11/28 06:31

申し訳ないとか思わなくてよいので、説明不足部分をきちんと納得できるまで質問本文を編集し続ければ良いのでは。見るのは赤の他人です。
m.ts10806

2020/11/28 08:21

「初心者アイコン」つけたなら「素人」などの文言は外しましょう。 それに「何の素人か」というのも分かりませんし、それなら「どういうことは分かる」「どういうことは分からない」「こういうことは調べた」「こういうことは試した」など具体的に書いてもらった方が質問者さんの程度が分かります。
guest

回答1

0

ベストアンサー

右クリックを押している状態で左クリックを押す

ここの解釈ですが順番「右→左」・「左→右」にこだわらないのであれば、マウスフック等を使わずに簡単に実現可能です。
つまり「ある時点で両方押されていればカーソル移動する」で十分な場合です。
それではダメだということであれば、以降見る必要はありません。


クリックは自ウィンドウ外では取得できませんが、ボタンが押されているかはカーソル位置によらず取得できます。
ONボタンでタイマー開始し、タイマー中でボタン状態を取得、両方押されていればカーソル移動の流れです。

  • TrackBar 2つ
  • Button 2つ
  • Timer 1つ
  • Label 必要なだけ

をフォームに置きます。
TrackBarMaximumMinimumTickFrequencyTickStyle各プロパティを好みに調整します。
Button.ClickTimer.Tickイベントを作成します。

とりあえずこのようにしました。
アプリ画像

C#コードは雑ですがこのような感じです。

cs

1using System; 2using System.Drawing; 3using System.Windows.Forms; 4 5namespace Questions306937 6{ 7 public partial class Form1 : Form 8 { 9 public Form1() => InitializeComponent(); 10 11 private void timer1_Tick(object sender, EventArgs e) 12 { 13 // 今マウスボタンが左右とも押されていれば... 14 if (Control.MouseButtons == (MouseButtons.Left | MouseButtons.Right)) 15 { 16 // タイマーは0.1秒間隔 1秒で指定PX移動のつもり(誤差が出る&10以下だと動かない) 17 var x = trackBar1.Value / 10; 18 var y = trackBar2.Value / 10; 19 20 // カーソル位置を更新 21 Cursor.Position = new Point(Cursor.Position.X + x, Cursor.Position.Y + y); 22 } 23 } 24 25 // ONボタンでタイマー開始 26 private void button1_Click(object sender, EventArgs e) => timer1.Start(); 27 28 // OFFボタンでタイマー停止 29 private void button2_Click(object sender, EventArgs e) => timer1.Stop(); 30 } 31}

「誤差が出る&10以下だと動かない」問題は、気になるようなら別の計算方法を考えてください。

参考
TrackBar クラス (System.Windows.Forms) | Microsoft Docs

Control.MouseButtons プロパティ (System.Windows.Forms) | Microsoft Docs

Cursor.Position プロパティ (System.Windows.Forms) | Microsoft Docs

投稿2020/11/28 09:55

編集2023/07/25 13:28
TN8001

総合スコア9855

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

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

newaa

2020/11/28 17:07

本当にありがとうございます。 お返事をいただいてから今やっと動作させることができました。 プログラミング自体今回が初めてだったのでもっと簡単なものから勉強してみます。 カーソルはしっかりと下がるのですが、どうしてもカクカクになってしまいます。 どのようにすればなめらかに移動できるのでしょうか
newaa

2020/11/29 02:15

ありがとうございます。解決しました。 ゲーム等をフルスクリーンで起動しておりカーソル情報を取得できない状態で位置情報を取得する方法はありますか?
TN8001

2020/11/29 09:31

他の手段でできるかもしれないし、それでもできないこともあるでしょう。 ゲームでは不正につながりやすいですから、私はこれ以上言及する気はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問