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

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

22.10.2013, 14:48. Показов 6837. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru