С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14

SetCursorPos не работает на ПК без Visual Studio

22.10.2013, 14:48. Показов 6776. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Заранее прошу прощения за дилетантство

Написал программку, которая помимо всего прочего использует перемещение курсора при помощи SetCursorPos(x,y);
Необходимо, чтобы она работала автономно на любом компьютере (хотя бы для Win7) .
У меня все собирается, запускается и успешно работает.

Но на компьютерах без установленной Visual Studio начинаются проблемы. Сначала при запуске .exe файла программы отображалось сообщение об ошибке "The program can't start because MSVCP110.dll is missing from your computer. Try reinstalling the program to fix this problem."
Нашел такое решение: в свойствах проекта Configuration Properties -> C/C++ -> Code Generation -> Runtime Library Вместо "Multi-threaded DLL(/MD)" поставил просто "Multi-threaded(/MT)".
Программа стала запускаться и работать не выдавая ошибок на ПК без студии. Но курсор не двигается. То есть не работает SetCursorPos...

Использую VS2012.
Надеюсь на Вашу помощь, заранее благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2013, 14:48
Ответы с готовыми решениями:

Не работает кнопка PING без Visual Studio
Здравствуйте, Пишу проект, в котором имеется GridView. Для каждой строки GridView имеется кнопка PING, которая пингует имеющийся IP адрес...

Не работает отладка кода в Visual Studio pro 2012+qt visual studio add-in 1.2.1
Здравствуйте, скажите пожалуйста в чем проблема, запускаю этот код (F5) в Visual Studio #include <QtWidgets/QApplication> ...

Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему?
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а Visual Studio 2008 пишет, что проэкт...

25
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 16:28
Цитата Сообщение от nickandjulia Посмотреть сообщение
The program can't start because MSVCP110.dll is missing from your computer.
Скопировать MSVCP110.dll и MSVCR110.dll из соответствующей папки Visual Studio (VC\Redist) и
положить их рядом со своим exe.

Цитата Сообщение от nickandjulia Посмотреть сообщение
Программа стала запускаться и работать не выдавая ошибок на ПК без студии. Но курсор не двигается. То есть не работает SetCursorPos...
Что возвращает GetLastError ?
1
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 16:39  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Что возвращает GetLastError ?
Возвращает ноль... Пишу, например, так:
C++
1
2
3
4
    SetCursorPos(100,100);
    Sleep(2000);
    SetCursorPos(cp.x,cp.y);
    std::cout <<GetLastError();
в консоли выводится ноль. Да и никаких ошибок не возникает, как будто все работает нормально. Но курсор положение не меняет.

PS: Собираю, естественно, на компе с VS2012, а проверяю на компе без студии
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 16:46
А что возвращает сама SetCursorPos ?

В MSDN написано:

SetCursorPos function
http://msdn.microsoft.com/en-u... s.85).aspx
The cursor is a shared resource. A window should move the cursor only when the cursor is in the window's client area.
Не Ваш случай ?
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 17:26  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
А что возвращает сама SetCursorPos ?
Возвращает true как на пк со студией, так и на пк без нее.
Цитата Сообщение от Убежденный Посмотреть сообщение
The cursor is a shared resource. A window should move the cursor only when the cursor is in the window's client area.
Не Ваш случай ?
Возможно я неправильно понимаю понятие window's client area.. Имеется в виду площадь прямоугольника, которую занимает окно?
Просто программа работает так:
Собственно она представляет собой консоль
Находит хэндл нужного окна и работает с ним (консоль при этом вообще убрана в сторону и курсор перемещается всегда вне консоли)

Добавлено через 26 минут
Проверено на 2х компьютерах со студией и на 3х компьютерах без студии. Запускается один и тот же автономный .exe файл. Все указывает на то, что дело в установленной студии. Как это ни странно звучит.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 17:49
Можете привести минимальный код, воспроизводящий проблему ?
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 17:56  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Можете привести минимальный код, воспроизводящий проблему ?
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "windows.h"
#include <iostream>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetCursorPos(100,100);
    return 0;
}
На ПК со студией меняет положение курсора, на ПК без студии - нет.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 18:21
Ерунда какая-то. При чем тут Visual Studio ?
Ведь SetCursorPos - это функция Windows, с наличием или отсутствием Visual Studio на
компьютере ее работа никак не связана.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 18:32  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Ерунда какая-то. При чем тут Visual Studio ?
Ведь SetCursorPos - это функция Windows, с наличием или отсутствием Visual Studio на
компьютере ее работа никак не связана.
Так-то да... но других причин я пока не вижу.. Вот даже этот простенький пример, код которого я написал в предыдущем сообщении. Собираю, запускаю .ехе - работает, курсор смещается. Копирую на другой компьютер вместе с MSVCP110.dll и MSVCR110.dll (или Runtime Library ставлю "Multi-threaded(/MT)", или устанавливаю vcredist_x86), запускаю - ошибок нет, программа выполняется, но курсор не двигается.
Собирал такую же программу на другом компьютере (тоже со студией), проделывал то же самое, собранную программу запускали на другом ПК - курсор не двигается...

Даже не знаю, в каком направлении думать.

При установке студии ставится куча разных библиотек. Я было подумал, может в этом дело? Но ведь без нужной библиотеки программа попросту бы не запустилась..
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 18:41
Ради интереса собрал тестовое приложение по коду выше.
Запустил на трех компьютерах (на одном установлена Visual Studio).
Везде отработало нормально - курсор переместился в позицию
недалеко от верхнего левого угла экрана.
1
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
22.10.2013, 18:47
Нужная библиотека - это user32.dll. Она есть на любом компьютере под Windows в папке %systemroot%\system32. Если программа сбоила только на одном компьютере, можно предположить, что проблема в этой самой библиотеке (в том смысле, что она есть, но повреждена/модифицирована).
1
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 19:26  [ТС]
Хмм, совсем я запутался.. Может в свойствах проекта что изменить нужно?

Создаю проект с нуля, сделал скриншоты. Собираю, всё то же самое...
Прикрепил архив с проектом.
Где же я свернул не туда?
Буду благодарен, если подскажете..
В любом случае, спасибо за ваше время и желание помочь
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 19:28  [ТС]
CursorTest.rar








Забыл прикрепить
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 19:40  [ТС]
Цитата Сообщение от mytilus Посмотреть сообщение
Нужная библиотека - это user32.dll. Она есть на любом компьютере под Windows в папке %systemroot%\system32. Если программа сбоила только на одном компьютере, можно предположить, что проблема в этой самой библиотеке (в том смысле, что она есть, но повреждена/модифицирована).
Да дело в том, что проверял я на 4х ПК, расположенных, можно сказать, в разных частях страны, нигде курсор не перемещается. Неужели у всех повреждена эта библиотека?
Мне сейчас все больше кажется, что я неправильно собираю проект.. вот еще пара скринов из окна свойств.


0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 19:42
Ок, не хватает только тех самых msvcr110.dll и msvcp110.dll.
Или exe-шника, скомпилированного с ключом /MT.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 19:45  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Ок, не хватает только тех самых msvcr110.dll и msvcp110.dll.
Или exe-шника, скомпилированного с ключом /MT.
Да-да, беру из папки студии и кладу непосредственно рядом с екзешником на другой машине. И ничего, SetCurPos не работает..
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2013, 19:47
Цитата Сообщение от nickandjulia Посмотреть сообщение
Да-да, беру из папки студии
Из какой именно папки ? Путь напишите.
0
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 14
22.10.2013, 19:50  [ТС]
Я был бы благодарен, если бы Вы прикрепили тот проект, что работал на ПК без студии..
Если у меня заработает - неправильно собираю.
Если нет - кривые библиотеки на всех 4х машинах, где првоерял.

Добавлено через 2 минуты
Цитата Сообщение от Убежденный Посмотреть сообщение
Из какой именно папки ? Путь напишите.
Только сейчас увидел, что это не однозначный выбор.. я брал отсюда:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT
0
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
22.10.2013, 19:56
На машинах, где функция не работает, запустите командную строку и вбейте:
Code
1
rundll32 user32,SetCursorPos
Курсор переместился в край экрана?
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
22.10.2013, 20:31
nickandjulia,
Цитата Сообщение от nickandjulia Посмотреть сообщение
Нашел такое решение: в свойствах проекта Configuration Properties -> C/C++ -> Code Generation -> Runtime Library Вместо "Multi-threaded DLL(/MD)" поставил просто "Multi-threaded(/MT)".
Программа стала запускаться и работать не выдавая ошибок на ПК без студии. Но курсор не двигается. То есть не работает SetCursorPos...
Выложи EXE собранный с параметром MT.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2013, 20:31
Помогаю со студенческими работами здесь

Visual Studio выдаёт ошибку при вынесении объявления функции с template в .h файл. Без template всё работает
Проект содержит три файла: Source.cpp, arrTreat.h, arrTreat.cpp. Source.cpp: #include &lt;iostream&gt; using std::cout; using...

Ошибки в Visual C++: error C2065: 'SetCursorPos' : undeclared identifier
Здрасьте. У меня такой вопрос: Вот код.(Пишу на Microsoft Visual Studio C++ 6.0 void main(){ for (int i=0; i&lt;20; i++) { ...

Клик мышью по координатам без SetCursorPos
Здравствуйте. Необходимо выполнить программный клик мышкой по заданным координатам, но без установки курсора в эти координаты. Private...

Не работает Visual Studio Net 2003 с Visual Source Safe 6.0
Проблема! Был VSS от Visual Studio 6.0. Потом 1 год разрабатывал по Visual Studio .Net с тем же Source Safe - проблем не было. Снес Visial...

Visual C# без Visual Studio
Самый новый Visual C# как самостоятельный продукт нашел только версии 2010. Visual Studio же слишком тесно интегрируется с системой, ставит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru