Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
1

Запись движения курсора в файл и воспроизведение

08.01.2012, 15:50. Показов 5416. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как воспроизвести это:
Запись в файл в таком виде:
0 0
1 1
2 2
и т.д.
VB.NET
1
2
3
4
5
6
7
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Xcord = Cursor.Position.X
        Ycord = Cursor.Position.Y
        Dim Rec As New StreamWriter(TextBox1.Text, True, System.Text.Encoding.GetEncoding(1251))
        Rec.Write(Xcord & vbTab & Ycord & vbCrLf)
        Rec.Close()
    End Sub
Как это воспроизвести?
VB.NET
1
2
3
4
5
6
7
8
   Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        Dim Play As New StreamReader(TextBox1.Text, System.Text.Encoding.GetEncoding(1251))
        Ptxt = Play.ReadToEnd
        Xcord = Split(Ptxt)(0)
        Ycord = Split(Ptxt)(1) ' Это если было бы Rec.Write(Xcord & " " & Ycord & vbCrLf)
        Cursor.Position = New Point(Xcord, Ycord)
        Play.Close() ' Закрываем файл
    End Sub
У меня не воспроизводится а виснет.

Добавлено через 4 минуты
Есть ли какой MouseEvent по типу VB 6?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2012, 15:50
Ответы с готовыми решениями:

Воспроизведение координат курсора мыши
Здравствуйте. Сегодня мне нужно было сделать так, что бы считывался специальный файл, записывался в...

Запись курсора и воспроизведение его движения
Когда-то я наткнулся на пример проги, которая записывает все передвижения мыши, а потом может их...

Воспроизведение движения точки
Имеется набор координат материальной точки в ДСК (x, y) в разные моменты времени. Требуется...

Слишком быстрое воспроизведение звука и движения в игре
привет всем! у меня в некоторых играх диалог между персонажами происходит почти одновременно, а...

35
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.01.2012, 15:12  [ТС] 21
Author24 — интернет-сервис помощи студентам
В общем вот код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Imports System
Imports System.IO
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim X, Y
    Dim Stp As Integer
    Dim Record(Stp) As Point
    Dim A, S, D, C
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        X = Cursor.Position.X
        Y = Cursor.Position.Y
        Dim f As New StreamWriter("D:Test1.txt", True, System.Text.Encoding.GetEncoding(1251))
        f.Write(X & " " & Y & vbCrLf)
        f.Close()
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Stop()
        Timer2.Stop()
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Timer2.Start()
    End Sub
 
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim F_R As New StreamReader("D:Test1.txt", System.Text.Encoding.GetEncoding(1251)) ' Открываем файл D:test1.txt в стандартной кодировке 1251
        D = F_R.ReadToEnd ' Читаем в текстовое поле текст. ReadToEnd - это метод чтения файла полностью, есть метод ReadLine - чтение одной строчки
        F_R.Close() ' Закрываем файл
        For i = 0 To 4 Step 1
            S = Split(D, vbCrLf)(i)
            A = Split(S)(0)
            C = Split(S)(1)
            Cursor.Position = New Point(A, C)
        Next
    End Sub
 
    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        Label1.Text = Cursor.Position.X
        Label2.Text = Cursor.Position.Y
    End Sub
End Class
Вот то что находится в TXT:
0 0
1 2
10 5
13 13
100 100

Почему курсор залипает на 100 100 т.е. воспроизвожу и меня кидает прямо сразу в последние координаты не подставляя других. Как это можно исправить?

Добавлено через 3 часа 34 минуты
Цитата Сообщение от Памирыч Посмотреть сообщение
На форме 4 кнопки и 2 таймера
У меня почему то не сохраняет и еще вопрос зачем кнопка читаем записанное? Она открывает файл и читает? Но зачем тогда кнопку воспроизведения глушить(отключать)?

Добавлено через 2 минуты
И еще почему твой вариант не останавливается после выполнения действий а продолжает читать по 2 кругу?

Добавлено через 6 часов 6 минут
При сохранении ошибка в твоем коде:
Тип "WindowsApplication2.Pos" в сборке "WindowsApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" не помечен как сериализуемый.
Как исправить?
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.01.2012, 16:16 22
Цитата Сообщение от Hennasy Посмотреть сообщение
У меня почему то не сохраняет и еще вопрос зачем кнопка читаем записанное
Первая кнопка запускает запись.
Вторая - останавливает запись, и сохраняет ее в файл
Третья загружает запись из файла
Четвертая начинает двигать курсор по загруженным данным

Не по теме:

Что-то с темой не то, глюк какой-то

0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.01.2012, 16:29  [ТС] 23
Ошибка на кнопке 2 на строчке
VB.NET
1
formatter.Serialize(stream, Record)
Тип "WindowsApplication1.Pos" в сборке "WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" не помечен как сериализуемый.
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.01.2012, 16:33 24
https://www.cyberforum.ru/post2366292.html
Ты код полностью вставлял? Ничего не выпустил.
Если да, то после класса формы следом идет другой класс - Pos
Он должен быть сериализуемый, иначе в файл его не записать. В коде он уже сериализуемый.

Не по теме:

А вообще, этот код для такой задачи - гвозди микроскопом. Но для развития самое оно

0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.01.2012, 16:36  [ТС] 25
То есть надо было еще это <System.Serializable()>?

Добавлено через 1 минуту
А как мне файл с координатами открыть если он бинарный:?))
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.01.2012, 16:37 26
Цитата Сообщение от Hennasy Посмотреть сообщение
А как мне файл с координатами открыть если он бинарный
Как и любой нормальный файл - программой

А что, надо чтобы блокнотом открывался? Тогда программу надо переписывать с нуля
1
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
09.01.2012, 16:42  [ТС] 27
Воо тогда другое дело)). Если только программой)). Спасибо большое!
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
11.01.2012, 16:49  [ТС] 28
Почему не работает то есть оно работает но в тхт документ пишет координаты 0 0 как исправить?:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
 
    Public X, Y As Point
    Public Pos As Point
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        My.Computer.FileSystem.WriteAllText("D:\1.txt", Pos.X & " " & Pos.Y & vbCrLf, True)
    End Sub
 
End Class
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
11.01.2012, 17:09 29
а пос - это что? координаты курсора? а где это написано?
может надо так
VB.NET
1
2
например при событии __форм::формлоад
pos = Cursor.Position
1
1496 / 1044 / 146
Регистрация: 01.10.2009
Сообщений: 3,510
Записей в блоге: 1
11.01.2012, 17:15 30
ТАк сойдет?
VB.NET
1
2
3
        Dim X As Integer = Cursor.Position.X.ToString
        Dim Y As Integer = Cursor.Position.Y.ToString
        My.Computer.FileSystem.WriteAllText("D:\1.txt", X & " " & Y & vbCrLf, True)
1
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
11.01.2012, 17:20  [ТС] 31
Теперь как мне это прочитать можно? Т.е. прочитать файл и перенести курсор в те места которые там написаны?

VB.NET
1
2
3
4
5
6
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Xcord, Ycord
        Xcord = Cursor.Position.X
        Ycord = Cursor.Position.Y
        My.Computer.FileSystem.WriteAllText("D:\1.txt", Xcord & vbTab & Ycord & vbCrLf, True)
    End Sub
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
11.01.2012, 17:35 32
соответственно так же
прочитал_X = cursor.position.x
прочитал_Y = cursor.position.y

Добавлено через 2 минуты
ой ТО есть наоборот,
А читать нужно - знать как (в каком виде) у тебя записываются данные
VB.NET
1
2
3
dim m() as string = io.file.readalllines("D:\1.txt")
cursor.position.x = cint(m(0))
cursor.position.y = cint(m(1))
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
11.01.2012, 18:29  [ТС] 33
Вот что тут не так?
VB.NET
1
2
3
4
5
6
7
8
9
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim MassX(1001), MassY(1001)
        For i = 0 To 1000
            Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
            MassX(i) = CInt(m(0))
            MassY(i) = CInt(m(1))
            Cursor.Position = New Point(MassX(i), MassY(i))
        Next
    End Sub
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
11.01.2012, 19:44 34
вот это
VB.NET
1
Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
написать перед циклом для начала...И потом попробовать заного, и сказать что выходит..?!

Добавлено через 1 минуту
VB.NET
1
2
3
4
5
6
7
8
  
Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
For i = 0 To 1000
            Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
            MassX(i) = CInt(m(i))
            MassY(i) = CInt(m(i+1))
            Cursor.Position = New Point(MassX(i), MassY(i))
        Next
я так понимаю курсор у тебя на месте стоит и это тебя не устраивает, так?

Добавлено через 27 секунд
ой, ну то есть 3строчку стереть
0
525 / 487 / 98
Регистрация: 25.12.2011
Сообщений: 1,176
12.01.2012, 14:42  [ТС] 35
VB.NET
1
2
3
4
5
6
7
8
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
        For i = 0 To 1000
            MassX(i) = CInt(m(i))
            MassY(i) = CInt(m(i + 1))
            Cursor.Position = New Point(MassX(i), MassY(i))
        Next
    End Sub
Не работает:
Приведение строки "228 237" к типу "Integer" является недопустимым.
Я не пойму почему он пытается к МассХ вписать 2 положения Х и У?

Добавлено через 5 минут
Но если записывать координаты в ТХТ так:
VB.NET
1
2
3
4
5
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Xcord = Cursor.Position.X
        Ycord = Cursor.Position.Y
        My.Computer.FileSystem.WriteAllText("D:\1.txt", Xcord & vbCrLf & Ycord & vbCrLf, True)
    End Sub
Тогда воспроизводит, но он что то как то ведет себя бешено) (курсор), то есть он перемешается в разные координаты с очень быстрой скоростью, (скорость таймера увеличивал все равно не уменьшается) как исправить?.
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
12.01.2012, 19:17 36
ты мутишь чето очень крутое
А вообще я тебя понимаю, играешься, разбираешься, правильно..
Но вообще твою идею я не оч понимаю, а ту часть что понимаю - считаю что не правильно выполненно. Ты хочешь записывать типа видео курсора?

Цитата Сообщение от Hennasy Посмотреть сообщение
Не работает:
Приведение строки "228 237" к типу "Integer" является недопустимым.
я думал что ты записываешь на каждую строчку по координате, то есть так
VB.NET
1
Xcord & vbCrLf & Ycord & vbCrLf
поэтому и ошибка. Поэтому дальше ты поступил(исправил) правильно. Но если хочешь оставить как при первом способе запись в файл - то нужно тогда по другому распеделять строчки после чтения(их нужно разделять строчки_из_файла.split(vbtab). То есть создать еще один массив уже разделенных строчек.
Ну а прыгает курсор видимо потому что так ты и записывал его(дергал курсором..попробуй записывать плавно). Хотя дело скорее не в этом. А в том что ты используешь цикл в таймере. Не буду говорить как лучше сделать(убрать таймер или цикл в таймере ). Но для начала сделай так, хотя это ппц не правильно
VB.NET
1
2
3
4
5
6
7
8
9
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim m() As String = IO.File.ReadAllLines("D:\1.txt")
        For i = 0 To 1000
            MassX(i) = CInt(m(i))
            MassY(i) = CInt(m(i + 1))
            Cursor.Position = New Point(MassX(i), MassY(i))
Threading.Thread.Sleep(100) '//500
        Next
    End Sub
1
12.01.2012, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2012, 19:17
Помогаю со студенческими работами здесь

Макрос движения курсора
Всем добрый день. пытаюсь разбить текст (без абзацев) на строки определенной длины. длину подбираю...

Запрет движения курсора
Как запретить курсору проходить над компонентом Panel к примеру??? Хочу из компонентов Panel...

Отрегулировать скорость движения курсора
Сделал программу которая перемещает курсор по экрану по определенным точкам, но возникла проблема,...

Захват движения мыши, не курсора
Сделал захват мыши через хук, все хорошо, но что делать, если приложение не дает курсору двигаться,...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru