Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)? / 9 сообщений из 9, страница 1 из 1
08.02.2012, 13:09
    #37651578
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Долго думал как на форме при просмотре фотографий получить эффект плавной смены картинок и тут понял, что у нас всех есть универсальный форма с контролом для воспроизведения, хоть картинок, хоть анимации...
Это стандартная заставка Windows... но как ею управлять через VBA?
1.Как программно запустить ее?
2.Как программно запретить закрытие при шевелении мышки?
3.Как ввести список-последовательность файлов?
4.Как программно закрыть (обойдя необходимость вводить пароль, при запароленном входе)?
5. Как совместить всплывающую картинку и текст в форме бегущей строки?
...
Рейтинг: 0 / 0
08.02.2012, 14:48
    #37651789
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
стандартная заставка Windows - если имеется ввиду хранитель экрана, то в VBA его не сделать :)
И есть куча программ, которые предназначены для изготовления слайд-шоу из ваших фото.
...
Рейтинг: 0 / 0
08.02.2012, 19:28
    #37652439
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
DMK67Долго думал..."Что тут думать, тут прыгать надо".
...
Рейтинг: 0 / 0
09.02.2012, 18:53
    #37654604
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Я с этим месяц разбираться буду.... попробую тупо встроить себе на форму...
...
Рейтинг: 0 / 0
09.02.2012, 19:46
    #37654697
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Не могу разобраться с таймером
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Timer1_Timer()
 Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
 Set Image2.Picture = Pic2.Picture(pdEMF, 255 - bAlpha)

 Dim Alpha As Integer
 Alpha = CntI(bAlpha) + DAlpha * SAlpha
 If Alpha > 255 Then
    If bAlpha = 255 Then
       bAlpha = 255 - DAlpha
       SAlpha = -1
    Else
       bAlpha = 255
    End If
 ElseIf Alpha < 0 Then
    If bAlpha = 0 Then
       bAlpha = DAlpha
       SAlpha = 1
    Else
       bAlpha = 0
    End If
 Else
    bAlpha = Alpha
 End If
End Sub




непонятный оператор:
Код: vbnet
1.
CntI(bAlpha)
...
Рейтинг: 0 / 0
09.02.2012, 19:49
    #37654701
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
DMK67непонятный оператор:
Код: vbnet
1.
CntI(bAlpha)

проверь машину на предмет вирусов, которые букавки переставляют
в оригинале:
Код: vbnet
1.
Alpha = CInt(bAlpha) + DAlpha * SAlpha
...
Рейтинг: 0 / 0
10.02.2012, 01:08
    #37655059
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
DMK67Не могу разобраться с таймером
...
непонятный оператор: CntI(bAlpha)bAlpha - коэффициент прозрачности, от 0 (полная прозрачность) до 255 (полная непрозрачность). Первые две строчки - загрузка в элементы управления Image1 и Image2 изображений с дополняющими друг друга коэффициентами прозрачности. Строки далее меняют текущий коэффициент для использования при следующем событии таймера. CInt() - функция явного преобразования числового значения к типу Integer (см. справку). В принципе, здесь компилятор преобразование типа сам сделает, исходя из типа следующего слагаемого, DAlpha * SAlpha, так что это перестраховка.DMK67Я с этим месяц разбираться буду...Вот попадает вам в руки какое-нибудь сложное устройство или программа, например, мобильник. Что, обязательно требуется знать уравнения Максвелла, радиотехнику, микроэлектронику, код прошивки, и т. д., чтобы начать им пользоваться? Нет. А вот интерфейс, хотя бы в минимальной степени - да. Здесь то же самое. Посмотрите на Public - описания модулей, чтобы получить представление, что они умеют делать, плюс пример использования (модуль формы), для этого много времени не надо.
...
Рейтинг: 0 / 0
10.02.2012, 18:27
    #37656529
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Интересно, а что такое

Код: vbnet
1.
DrawBuffer = 1048576



опытным путем выяснил что варьируется от 16000 до 1048576 ?



Немного усовершенствовал код в форме для удобства пользования, ввел понятие шага и сдвига, чтобы удобнее было настраивать

Код: vbnet
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
Option Explicit

Private WithEvents Timer1 As VBAProject.Timer
Private Pic1 As CDrawingSurface
Private Pic2 As CDrawingSurface
Private bAlpha As Integer
Private DAlpha As Integer
Private SHAG_1 As String
Private SDVIG_1 As String

Private Sub UserForm_Initialize()
 Set Pic1 = New CDrawingSurface
 Pic1.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Boy&Horse.jpg")
 bAlpha = 255
 Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
 TextBox1.Value = bAlpha
End Sub

Private Sub UserForm_Terminate()
 DeleteTimer1
End Sub

Private Sub Timer1_Timer()

Set Image1.Picture = Pic1.Picture(pdEMF, bAlpha)
Set Image2.Picture = Pic2.Picture(pdEMF, DAlpha)

If bAlpha >= SHAG_1 Then
bAlpha = bAlpha - SHAG_1
Else
bAlpha = 0
End If

If bAlpha < SDVIG_1 Then
If DAlpha <= 255 - SHAG_1 Then
DAlpha = DAlpha + SHAG_1
Else
DAlpha = 255
DeleteTimer1
End If
End If

TextBox1.Value = bAlpha
TextBox2.Value = DAlpha

End Sub
Private Sub CommandButton1_Click()
 Set Pic1 = New CDrawingSurface
 Pic1.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Boy&Horse.jpg")
 Set Pic2 = New CDrawingSurface
 Pic2.LoadPicture LoadPicture(ActiveWorkbook.Path & "\Chateau.jpg")
' задаем прозрачность для Pic1
 bAlpha = 255
 ' задаем прозрачность для Pic2
 DAlpha = 0
  ' задаем шаг изменения прозрачности
 SHAG_1 = 30
' задаем границу прозрачности при которой еще
'не прекратилось "стирание" первой картинки,
'но уже началось проявление второй
 SDVIG_1 = 125

DrawBuffer = 1048576

 DeleteTimer1
 Set Timer1 = New VBAProject.Timer
 Timer1.Interval = 1
 Timer1.Enabled = True
End Sub

Private Sub DeleteTimer1()
  If Not Timer1 Is Nothing Then
    Timer1.Enabled = False
    Set Timer1 = Nothing
    DoEvents
 End If
End Sub
...
Рейтинг: 0 / 0
10.02.2012, 20:05
    #37656636
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)?
Немного поправил код... но есть серьезная проблема: при размере файла более 200-300кБ - начинается торможение и мерцание... а как програмно уменьшить размер файла?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программно заменить стандартную заставку Windows на собственное слайдшоу (через VBA)? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]