當前位置:首頁 » 操作系統 » 開機啟動源碼

開機啟動源碼

發布時間: 2024-05-25 12:44:37

⑴ Android源碼發開記錄-修改開機logo啟動頁、開機動畫

開機logo主要與kernel/drivers/video/logo下的logo_linux_clut224.ppm有關。
現kernel源碼內一般以提供廠商的logo為主。
我們需要替換的文件也就是該ppm文件。

這里直接提供png轉ppm的sh腳本。前提是必須安裝了以下工具(pngtopnm,pnmquant,pnmtoplainpnm)

./png2ppm.sh XX.png

用生成的同名ppm文件替換logo_linux_clut224.ppm。
同時刪除kernel/drivers/video/logo下的logo_linux_clut224.c和logo_linux_clut224.o

Android開機動畫主要是由一個zip格式的壓縮包bootanimation.zip組成,壓縮包裡麵包含數張png格式的圖片,還有一個desc.txt的文本文檔,開機時按desc.txt裡面的指令,屏幕上會按文件名稱順序連續的播放一張張的圖片。、

這個一般flash製作或者選擇交給美工製作了。圖片張數盡量不要太多。
關鍵:圖片一定要按順序命名。

重點在於desc.txt文件。
其中1188 624代表解析度,表示幀動畫以這個解析度顯示。解析度不是越高越好,容易造成開機卡頓,不流暢。
25表示的是幀數,就是每秒播放的圖片數量。
p1(代表著播放一次) 0(空指令)part0 */這句指令就代表這part0文件夾內的圖片只按名稱順序播放一次
p0(重復播放)0 (空指令)part1 */這一句指令代表著part1文件夾內的圖片會循環反復播放

打包要用zip格式,而不是rar格式。另外壓縮的時候壓縮方式要選擇存儲。將壓縮包名修改為bootanimation.zip。

1)可直接將生成的bootanimation.zip放入設備/system/meida目錄下重啟驗證開機動畫效果。
2)源碼上可直接將bootanimation.zip拷貝至/out/target/proct/rk3288/system/media目錄下,最終打包進成型固件中。

⑵ 如何用C#語言通過服務來實現開機啟動

很多開機啟動程序僅僅加在啟動項裡面,只有登陸後才真正啟動。windows服務在開機未進行用戶登錄前就啟動了。正是利用這咐型辯一點,解決一些伺服器自動重啟後特定軟體也自動啟動的問題。
1.新建一個服務項目 visual C#----windows----windows服務;
2.添加一個租手dataset(.xsd),用於存儲啟動目標的路徑,日誌路徑等。
在dataset可視化編輯中,添加一個datatable,包含兩列 StartAppPath 和 LogFilePath。分別用於存儲目標的路徑、日誌路徑。
*我認為利用dataset.xsd存儲配置參數的優勢在於可以忽略xml解析的具體過程直接使用xml文件。
在dataset中 提供了ReadXml方法用於讀取xml文件並將其轉換成內存中的一張datatable表,數據很容易取出來!同樣,WriteXml方法衡缺用於存儲為xml格式的文件,也僅僅需要一句話而已。
3. program.cs文件 作為程序入口,代碼如下:
view plain to clipboardprint?
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;

namespace WindowsServices_AutoStart
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;

// 同一進程中可以運行多個用戶服務。若要將
// 另一個服務添加到此進程中,請更改下行以
// 創建另一個服務對象。例如,
//
// ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() };

ServiceBase.Run(ServicesToRun);
}
}
}
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;
namespace WindowsServices_AutoStart
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
// 同一進程中可以運行多個用戶服務。若要將
// 另一個服務添加到此進程中,請更改下行以
// 創建另一個服務對象。例如,
//
// ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() };
ServiceBase.Run(ServicesToRun);
}
}
}
4.service.cs主文件,代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
namespace WindowsServices_AutoStart
{
public partial class WindowsServices_AutoStart : ServiceBase
{
public WindowsServices_AutoStart()
{
InitializeComponent();
}
string StartAppPath =""; //@"F:\00.exe";
string LogFilePath ="";// @"f:\WindowsService.txt";
protected override void OnStart(string[] args)
{
string exePath = System.Threading.Thread.GetDomain().BaseDirectory;
//
if (!File.Exists(exePath + @"\ServiceAppPath.xml"))
{
dsAppPath ds = new dsAppPath();
object[] obj=new object[2];
obj[0]="0";
obj[1]="0";
ds.Tables["dtAppPath"].Rows.Add(obj);
ds.Tables["dtAppPath"].WriteXml(exePath + @"\ServiceAppPath.xml");
return;
}
try
{
dsAppPath ds = new dsAppPath();
ds.Tables["dtAppPath"].ReadXml(exePath + @"\ServiceAppPath.xml");
DataTable dt = ds.Tables["dtAppPath"];
StartAppPath = dt.Rows[0]["StartAppPath"].ToString();
LogFilePath = dt.Rows[0]["LogFilePath"].ToString();
}
catch { return; }

if (File.Exists(StartAppPath))
{
try
{
Process proc = new Process();
proc.StartInfo.FileName = StartAppPath; //注意路徑
//proc.StartInfo.Arguments = "";
proc.Start();
}
catch (System.Exception ex)
{
//MessageBox.Show(this, "找不到幫助文件路徑。文件是否被改動或刪除?\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
FileStream fs = new FileStream(LogFilePath, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("WindowsService: Service Started" + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
}
protected override void OnStop()
{
try
{
// TODO: 在此處添加代碼以執行停止服務所需的關閉操作。
FileStream fs = new FileStream(LogFilePath, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("WindowsService: Service Stopped " + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
catch
{
}
}
}
}

5.啟動調試,成功時也會彈出一個對話框大致意思是提示服務需要安裝。
6.把Debug文件夾下面的.exe執行程序,安裝為windows系統服務,安裝方法網上很多介紹。我說一種常用的:
安裝服務
訪問項目中的已編譯可執行文件所在的目錄。
用項目的輸出作為參數,從命令行運行 InstallUtil.exe。在命令行中輸入下列代碼:
installutil yourproject.exe
卸載服務
用項目的輸出作為參數,從命令行運行 InstallUtil.exe。
installutil /u yourproject.exe
至此,整個服務已經編寫,編譯,安裝完成,你可以在控制面板的管理工具的服務中,看到你編寫的服務。
7.安裝好了之後在系統服務列表中可以管理服務,這時要注意將服務的屬性窗口----登陸----「允許於桌面交互」勾選!這樣才能在啟動了你要的目標程序後不單單存留於進程。在桌面上也看得到。
8.關於卸載服務,目前有兩個概念:一是禁用而已;一是完全刪除服務。 前者可以通過服務管理窗口直接完成。後者則需要進入注冊表「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services」找到服務名稱的文件夾,整個刪掉,重新啟動電腦後,服務消失。
9.擴展思考:經過修改代碼,還可以實現:啟動目標程序之前,檢測進程中是否存在目標程序,存在則不再次啟動

⑶ 易語言開機啟動源碼

' 就兩行代碼
' 開機啟動如下:(只是一行)

寫注冊項 (#本地機器, 「software\microsoft\windows\CurrentVersion\Run\ZDYY」, 取運行目錄 () + 「\」 + 取執行文件名 ())

' 取消開機啟動如下:

刪除注冊項 (#本地機器, 「software\microsoft\windows\CurrentVersion\Run\ZDYY」)

⑷ 璺奼傛槗璇璦鏁翠漢寮鏈哄惎鍔ㄥ瘑鐮佹簮鐮

榪欎釜寰堢畝鍗 涓ゅ彞浠g爜鎼炲畾 宸叉祴璇曞畬姣

熱點內容
手機怎樣更新uc瀏覽器緩存 發布:2024-11-27 01:17:32 瀏覽:74
基因密碼編譯生物 發布:2024-11-27 01:16:23 瀏覽:244
演算法spj 發布:2024-11-27 01:12:02 瀏覽:290
小區密碼八位一般是多少 發布:2024-11-27 01:07:20 瀏覽:626
調試編譯七段數碼管源程序 發布:2024-11-27 01:02:32 瀏覽:159
賬號注冊源碼 發布:2024-11-27 00:51:26 瀏覽:9
添銳壓縮機 發布:2024-11-27 00:46:45 瀏覽:618
別克s60和君威配置哪個好 發布:2024-11-27 00:36:03 瀏覽:722
資料庫的文件名稱 發布:2024-11-27 00:30:04 瀏覽:336
javaweb與android交互 發布:2024-11-27 00:28:26 瀏覽:918