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

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

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

C++/CLIは、.NET Frameworkの共通言語基盤であるCLI向けにC++を拡張したプログラム言語です。前身のC++マネージ拡張と比較するとシンプルで分かりやすい構文になっており、高い可読性を持ちます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Q&A

解決済

1回答

1120閲覧

C++/CLI, マウス移動とクリックの方法

u963593d

総合スコア1

C++/CLI

C++/CLIは、.NET Frameworkの共通言語基盤であるCLI向けにC++を拡張したプログラム言語です。前身のC++マネージ拡張と比較するとシンプルで分かりやすい構文になっており、高い可読性を持ちます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

0グッド

0クリップ

投稿2022/01/19 05:11

windows7 Visial studio Community2017のC++/CLIでボタンを押すとマウスを特定の位置に動かして、クリックするというGUIを作っているのですが、mouse_eventを呼び出せません。
mouse_eventというものがWinUser.hに定義されていると思うのですが、なぜでしょうか。
<MyForm1.h>

#pragma once #include <iostream> #include <math.h> #include <windows.h> #include <string> #include <ctime> #include <WinUser.h> namespace Project1 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace std; using namespace System::Runtime::InteropServices; /// <summary> /// MyForm の概要 /// </summary> public ref class MyForm : public System::Windows::Forms::Form { public: MyForm(void) { InitializeComponent(); // //TODO: ここにコンストラクター コードを追加します // } protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~MyForm() { if (components) { delete components; } } protected: private: System::Windows::Forms::Button^ button1; private: System::ComponentModel::IContainer^ components; private: System::Windows::Forms::Button^ button2; private: /// <summary> /// 必要なデザイナー変数です。 /// </summary> #pragma region Windows Form Designer generated code /// <s ummary> /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// </summary> void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); // // button2 // this->button2->Location = System::Drawing::Point(41, 205); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(57, 23); this->button2->TabIndex = 12; this->button2->Text = L"button2"; this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click); // // MyForm // this->AutoScaleDimensions = System::Drawing::SizeF(6, 12); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(588, 489); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Name = L"MyForm"; this->Text = L"MyForm"; this->Click += gcnew System::EventHandler(this, &MyForm::button2_Click); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { lclick(100, 100); } void lclick(int x, int y) { SetCursorPos(x, y); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } }; }

以下のようなエラーが出ます。

エラー LNK2028 未解決のトークン (0A000532) "extern "C" void __cdecl mouse_event(unsigned long,unsigned long,unsigned long,unsigned long,unsigned __int64)" (?mouse_event@@$$J0YAXKKKK_K@Z) が関数 "private: void __clrcall Project1::MyForm::lclick(int,int)" (?lclick@MyForm@Project1@@$$FAE$AAMXHH@Z) で参照されました。 Project1 C:\Users\diagnosis\source\repos\Project1\Project1\MyForm1.obj 1 エラー LNK2028 未解決のトークン (0A0005C0) "extern "C" int __cdecl SetCursorPos(int,int)" (?SetCursorPos@@$$J0YAHHH@Z) が関数 "private: void __clrcall Project1::MyForm::lclick(int,int)" (?lclick@MyForm@Project1@@$$FAE$AAMXHH@Z) で参照されました。 Project1 C:\Users\diagnosis\source\repos\Project1\Project1\MyForm1.obj 1 エラー LNK2019 未解決の外部シンボル "extern "C" int __cdecl SetCursorPos(int,int)" (?SetCursorPos@@$$J0YAHHH@Z) が関数 "private: void __clrcall Project1::MyForm::lclick(int,int)" (?lclick@MyForm@Project1@@$$FAE$AAMXHH@Z) で参照されました。 Project1 C:\Users\diagnosis\source\repos\Project1\Project1\MyForm1.obj 1

プロパティでリンカーの設定などもしているのですが、うまくいきません、、

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

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

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

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

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

guest

回答1

0

ベストアンサー

追加の依存ファイルを追加していないのでは?
イメージ説明

windows.h をインクルードしてるので

#include <WinUser.h>

は必要ありません。

投稿2022/01/19 06:01

KOZ6.0

総合スコア2626

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

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

u963593d

2022/01/19 14:12

回答ありがとうございます。 User32.libをリンカーに追加し、追加のライブラリーディレクトリにそのファイルがあるディレクトリのパスを指定するとうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問