Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Сохранение сеанса работы приложения Добавлено: 15.05.07 13:57  

Автор вопроса:  Светлана
Здравствуйте.
Есть приложение, при работе в нем открываются окна, в них что-то рисуется.
Как при окончании работы с приложением надо сохранить его текущее состояние: расположение открытых окон и т.д. в файл с расширением, скажем, .mak
Ну ладно, Windows я настрою, чтобы файлы с расширением .mak открывались с помощью моего приложения. А как восстановить сохраненный в файл сеанс работы?
Люди добрые, хоть намекните, в какие разделы Помощи мне заглянуть или с помощью каких средств VB.NET это можно сделать?
Заранее спасибо всем!
Светлана.

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #1
Добавлено: 15.05.07 16:21
Читай из файла при загрузке формы

Ответить

Номер ответа: 2
Автор ответа:
 Visual Basic .NET 2005 Пиратская версия



Вопросов: 38
Ответов: 190
 Web-сайт: ex3mos.ucoz.ru
 Профиль | | #2
Добавлено: 15.05.07 16:40
Читай из файла при загрузке формы как заметил Серёга и ставь различные свойства формы, типа Сайз

Ответить

Номер ответа: 3
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #3
Добавлено: 15.05.07 17:16
Ну ладно, Windows я настрою, чтобы файлы с расширением .mak открывались с помощью моего
Перв.й раз вижу такую умную девчонку.:) Т. програмируеш для себя или заставил в школе(унивре)?

Ответить

Номер ответа: 4
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #4
Добавлено: 15.05.07 19:32
Перв.й раз вижу такую умную девчонку.:)

Да, девченка уникальная :))) (совершенно искренне)

Кста, Светлана, для этих целей обычно используются файлы с расширением .ini и работать с ними лучше (ИМХО) при помощи API функций.
Вот тебе кусочек коду:

Модуль:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

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 Ap As String

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-сайт: houselab.narod.ru
 Профиль | | #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
Только mak файлы не юзай - нечего сяшникам мозги пудрить...

Ну ты приколист!
Ребята, вопрос вот в чем. Вот, допустим, все файлы с расширением .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-сайт: www.doc-source.pp.net.ua/
 Профиль | | #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 ";Double Click" на имени файла при загрузке своего приложения? Или как?
Нужно при загрузке приложения как-то узнать имя файла, на котором кликнули.

Ответить

Номер ответа: 12
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #12 Добавлено: 17.05.07 09:29
Хы. Перехватывать не нужно ничего.
Надо ассоциировать тип файла с твоей программой. Например *.doc - C:\1.exe
Ассоциация файлов делается в реестре, в разделе HKEY_CLASSES_ROOT
Самое простое - создать файл 1.reg
Windows Registry Editor Version 5.00

[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 должно быть
Private Sub Form_Load()
    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
Ага. Надеюсь это то что тебе нужно ;)
По реестру тут много чего обсуждалось, так что спрашивай если что.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам