Страница: 1 |
Страница: 1 |
Вопрос: Сохранение сеанса работы приложения
Добавлено: 15.05.07 13:57
Автор вопроса: Светлана
Здравствуйте.
Есть приложение, при работе в нем открываются окна, в них что-то рисуется.
Как при окончании работы с приложением надо сохранить его текущее состояние: расположение открытых окон и т.д. в файл с расширением, скажем, .mak
Ну ладно, Windows я настрою, чтобы файлы с расширением .mak открывались с помощью моего приложения. А как восстановить сохраненный в файл сеанс работы?
Люди добрые, хоть намекните, в какие разделы Помощи мне заглянуть или с помощью каких средств VB.NET это можно сделать?
Заранее спасибо всем!
Светлана.
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #1
Добавлено: 15.05.07 16:21
Читай из файла при загрузке формы
Номер ответа: 2
Автор ответа:
Visual Basic .NET 2005 Пиратская версия
Вопросов: 38
Ответов: 190
Web-сайт:
Профиль | | #2
Добавлено: 15.05.07 16:40
Читай из файла при загрузке формы как заметил Серёга и ставь различные свойства формы, типа Сайз
Номер ответа: 3
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #3
Добавлено: 15.05.07 17:16
Номер ответа: 4
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #4
Добавлено: 15.05.07 19:32
Да, девченка уникальная )) (совершенно искренне)
Кста, Светлана, для этих целей обычно используются файлы с расширением .ini и работать с ними лучше (ИМХО) при помощи API функций.
Вот тебе кусочек коду:
Модуль:
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Public Function ReadIni(Filename As String, Section As String, Key As String) As String
Dim RetVal As String * 255, v As Long
v = GetPrivateProfileString(Section, Key, "", RetVal, 255, Filename)
If v = 0 Then
ReadIni = ""
Exit Function
End If
ReadIni = Left(RetVal, v)
End Function
Public Sub WriteIni(Filename As String, Section As String, Key As String, Value As String)
WritePrivateProfileString Section, Key, Value, Filename
End Sub
Форма:
Private Sub Form_Initialize()
Dim t As String
If Len(App.Path) = 3 Then Ap = App.Path Else Ap = App.Path + "\"
t = MyFile.ReadIni(Ap + "config", "position", "top"
If t <> "" Then Me.Top = Val(t)
t = MyFile.ReadIni(Ap + "config", "position", "left"
If t <> "" Then Me.Left = Val(t)
End Sub
Private Sub Form_Unload(Cancel As Integer)
MyFile.WriteIni App.Path + "\config", "position", "top", Str(Me.Top)
MyFile.WriteIni App.Path + "\config", "position", "left", Str(Me.Left)
End Sub
Номер ответа: 5
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #5
Добавлено: 15.05.07 19:35
Патч:
Private Sub Form_Unload(Cancel As Integer)
MyFile.WriteIni Ap + "config", "position", "top", Str(Me.Top)
MyFile.WriteIni Ap + "config", "position", "left", Str(Me.Left)
End Sub
Номер ответа: 6
Автор ответа:
Светлана
Вопросов: 4
Ответов: 5
Профиль | | #6
Добавлено: 16.05.07 07:51
Начальница сильно умная попалась А я так - погулять вышла...
Спасибо всем за ответы. Пошла разбираться. А вы до-о-обрые)))
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 16.05.07 14:33
Только mak файлы не юзай - нечего сяшникам мозги пудрить...
Номер ответа: 8
Автор ответа:
Светлана
Вопросов: 4
Ответов: 5
Профиль | | #8
Добавлено: 16.05.07 14:53
Ну ты приколист!
Ребята, вопрос вот в чем. Вот, допустим, все файлы с расширением .doc открываются с пом. приложения Microsoft Word. Windows так настроен. Что происходит при двойном щелчке на имени файла .doc?
1. Запускается приложение Microsoft Word.
2. Как имя-то файла в программе получить, по которому щелкали??? Какой функцией воспользоваться? В каком пространстве имен посмотреть? Чувствую, что все должно быть просто...
Номер ответа: 9
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #9
Добавлено: 16.05.07 15:28
Тему не сначала читаю - трафика нет
Если на VB6.0, то смотри переменную Command$
На VB.NET - наверное смотри все ту же Command$
Номер ответа: 10
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #10
Добавлено: 16.05.07 16:26
Передаеш параметр проге и черде command читаеш ее.Пример "c:/doc.Exe d:/doc22.Exe"
Номер ответа: 11
Автор ответа:
Светлана
Вопросов: 4
Ответов: 5
Профиль | | #11
Добавлено: 17.05.07 08:26
Нет, надо чтоб все происходило при двойном клике на имени файла. Так открываются файлы с расширениями .doc, .xls и т.д.
1. Запускается соответствующее приложение (Microsoft Word или Mickrosoft Excel).
2. Наверное, надо перехватить событие Windows "ouble Click" на имени файла при загрузке своего приложения? Или как?
Нужно при загрузке приложения как-то узнать имя файла, на котором кликнули.
Номер ответа: 12
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #12
Добавлено: 17.05.07 09:29
Хы. Перехватывать не нужно ничего.
Надо ассоциировать тип файла с твоей программой. Например *.doc - C:\1.exe
Ассоциация файлов делается в реестре, в разделе HKEY_CLASSES_ROOT
Самое простое - создать файл 1.reg
[HKEY_CLASSES_ROOT\.doc]
"document_file"
[HKEY_CLASSES_ROOT\document_file]
"Документ Microsoft Word"
[HKEY_CLASSES_ROOT\document_file\DefaultIcon]
"C:\\WINDOWS\\Installer\\{90110419-6000-11D3-8CFE-0150048383C9}\\wordicon.exe,1"
[HKEY_CLASSES_ROOT\document_file\shell]
"Open"
[HKEY_CLASSES_ROOT\document_file\shell\Open]
"&Открыть"
[HKEY_CLASSES_ROOT\document_file\shell\Open\command]
"C:\\1.EXE %1"
А в 1.EXE должно быть
MsgBox Command$
End Sub
Номер ответа: 13
Автор ответа:
Светлана
Вопросов: 4
Ответов: 5
Профиль | | #13
Добавлено: 17.05.07 10:41
ZagZag! )))
Спасибо за ответ! Так все просто! Надеюсь, это то, что мне нужно!
Номер ответа: 14
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #14
Добавлено: 17.05.07 12:16
Ага. Надеюсь это то что тебе нужно
По реестру тут много чего обсуждалось, так что спрашивай если что.