亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) 微信小程序 微信開(kāi)發(fā) 用WPF實(shí)現(xiàn)微信公眾號(hào)多客服功能

用WPF實(shí)現(xiàn)微信公眾號(hào)多客服功能

Mar 05, 2017 pm 02:16 PM
wpf 多客服功能 微信公眾號(hào)

原文標(biāo)題:用WPF實(shí)現(xiàn)微信公眾號(hào)多客服功能?

簡(jiǎn)介:

  這是利用WPF作為前端技術(shù),實(shí)現(xiàn)桌面版微信多客服系統(tǒng)。項(xiàng)目采用Prism作為前端框架,采用MVVM模式極好的對(duì)UI和邏輯代碼分離,使用MefBootstrapper集成的MEF IOC容器,解耦各模塊對(duì)象。合理利用?IEventAggregator 實(shí)現(xiàn)事件和交互。文章在介紹對(duì)應(yīng)功能時(shí)候會(huì)給出相關(guān)實(shí)現(xiàn)的參考,讀者可以參考改進(jìn),引入到自己的項(xiàng)目中。

程序運(yùn)行界面及功能預(yù)覽:

?

一、登陸:

功能:支持記住用戶(hù)和用戶(hù)設(shè)置,可選擇記住用戶(hù)密碼。

實(shí)現(xiàn)相關(guān):

自定義登陸窗口,引入Microsoft.Windows.Shell??蓞⒖?WPF Custom Chrome Library?和??MSDN?WindowChrome Class?有相關(guān)自定義窗口實(shí)現(xiàn)。

最小化、最大化、關(guān)閉按鈕功能實(shí)現(xiàn)可參考上面的例子。

登陸按鈕,自定義Style,重寫(xiě)B(tài)utton的Template,參考代碼如下:

?<Style x:Key="LogginButton" TargetType="{x:Type Button}">
????????<Setter Property="Template">
????????????<Setter.Value>
????????????????<ControlTemplate TargetType="{x:Type Button}">
????????????????????<Grid  >
????????????????????????<Border   x:Name="Bd" Background="{TemplateBinding Background }" BorderBrush="#d3d3d3" BorderThickness="1">
????????????????????????</Border>
????????????????????????<ContentPresenter  x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/>
????????????????????</Grid>
????????????????????<ControlTemplate.Triggers>
????????????????????????<Trigger Property="IsMouseOver" Value="True">
????????????????????????????<Setter TargetName="Bd" Property="BorderBrush" Value="#08bd14"/>
????????????????????????????<Setter TargetName="Bd" Property="Opacity" Value="0.8"/>
????????????????????????</Trigger>
????????????????????????<Trigger Property="IsPressed" Value="True">
????????????????????????????<Setter TargetName="Bd" Property="Background" Value="#f3f3f3"/>
????????????????????????????<Setter TargetName="contentPresenter" Property="Margin" Value="2,2,0,0"/>
????????????????????????</Trigger>
????????????????????</ControlTemplate.Triggers>
????????????????</ControlTemplate>
????????????</Setter.Value>
????????</Setter>
????</Style>

View Code

記住密碼,采用?XmlSerializer 把用戶(hù)信息序列化到本地xml配置文件中,程序啟動(dòng)時(shí)加載該xml配置文件。用法?MSDN?XmlSerializer?

?

二、聊天窗口,信息發(fā)送

功能:文字發(fā)送,表情發(fā)送,圖片發(fā)送,屏幕截圖,快捷回復(fù)

?

RichTextBox?相關(guān)實(shí)現(xiàn):文字,表情,圖片所有輸入都是在富文本框 里實(shí)現(xiàn),因此針對(duì)?TextChanged 事件對(duì)輸入進(jìn)行一系列處理。

文字:不用做任何處理。

表情:文本框里輸入的是表情的轉(zhuǎn)義符號(hào),然后根據(jù)轉(zhuǎn)義符號(hào)找到對(duì)應(yīng)表情圖片進(jìn)行替換。InlineUIContainer

Gif 動(dòng)態(tài)圖:WPF中不支持Gif,所以要編寫(xiě)自定義用戶(hù)控件作為用來(lái)顯示gif表情。參考 周銀輝?[WPF疑難]在WPF中顯示動(dòng)態(tài)GIF

截圖功能:源碼在網(wǎng)上找到的,是Winform的一個(gè)截圖。做了小許修改引進(jìn)到項(xiàng)目。

?參考:C# 實(shí)現(xiàn)完整功能的截圖控件(4)-完整版?http://ipnx.cn/

?

三、客戶(hù)列表

控件為?TabControl,重寫(xiě)了TabControl 的Style 和 TabItem的Style

????<Style x:Key="CustomerTabStyle" TargetType="{x:Type TabControl}">
????????<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
????????<Setter Property="Padding" Value="4,4,4,4"/>
????????<Setter Property="Background" Value="#F9F9F9"/>
????????<Setter Property="HorizontalContentAlignment" Value="Center"/>
????????<Setter Property="VerticalContentAlignment" Value="Center"/>
????????<Setter Property="Template">
????????????<Setter.Value>
????????????????<ControlTemplate TargetType="{x:Type TabControl}">
????????????????????<Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
????????????????????????<Grid.ColumnDefinitions>
????????????????????????????<ColumnDefinition x:Name="ColumnDefinition0"/>
????????????????????????????<ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
????????????????????????</Grid.ColumnDefinitions>
????????????????????????<Grid.RowDefinitions>
????????????????????????????<RowDefinition x:Name="RowDefinition0" Height="Auto"/>
????????????????????????????<RowDefinition x:Name="RowDefinition1" Height="*"/>
????????????????????????</Grid.RowDefinitions>
????????????????????????<TabPanel x:Name="HeaderPanel" Grid.Column="0" Background="#f6f6f6" IsItemsHost="true"  Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
????????????????????????<Border x:Name="ContentPanel"  Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
????????????????????????????<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
????????????????????????</Border>
????????????????????</Grid>
????????????????????<ControlTemplate.Triggers>
????????????????????????<Trigger Property="IsEnabled" Value="false">
????????????????????????????<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
????????????????????????</Trigger>
????????????????????</ControlTemplate.Triggers>
????????????????</ControlTemplate>
????????????</Setter.Value>
????????</Setter>
????</Style>

????<Style x:Key="ConnectedTabItemStyle" TargetType="{x:Type TabItem}">
????????<Setter Property="Foreground" Value="Black"/>
????????<Setter Property="Padding" Value="20,8,20,0"/>
????????<Setter Property="BorderBrush" Value="Transparent"/>
????????<Setter Property="Background" Value="#b9c0cc"/>
????????<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
????????<Setter Property="VerticalContentAlignment" Value="Stretch"/>
????????<Setter Property="Template">
????????????<Setter.Value>
????????????????<ControlTemplate TargetType="{x:Type TabItem}">
????????????????????<Grid SnapsToDevicePixels="true">
????????????????????????<Border x:Name="Bd" Background="#f6f6f6" Padding="{TemplateBinding Padding}">
????????????????????????????<StackPanel>
????????????????????????????????<Path  Width="18" Height="18"  Stretch="Fill" Fill="{TemplateBinding Background}" Data="F1 M 38,19C 43.5417,19 45.9167,22.1667 45.1174,28.8134C 45.8315,29.2229 46.3125,29.9928 46.3125,30.875C 46.3125,31.9545 45.5923,32.8658 44.6061,33.1546C 44.1941,34.623 43.5543,35.9229 42.75,36.9628L 42.75,41.9583C 45.3889,42.4861 47.5,42.75 50.6667,44.3333C 53.8333,45.9167 54.8889,47.3681 57,49.4792L 57,57L 19,57L 19,49.4792C 21.1111,47.3681 22.1667,45.9167 25.3333,44.3333C 28.5,42.75 30.6111,42.4861 33.25,41.9583L 33.25,36.9628C 32.4457,35.9229 31.8059,34.623 31.3939,33.1546C 30.4077,32.8658 29.6875,31.9545 29.6875,30.875C 29.6875,29.9928 30.1685,29.2229 30.8826,28.8134C 30.0833,22.1667 32.4583,19 38,19 Z "/>
????????????????????????????????<Border HorizontalAlignment="Center" x:Name="BottomBd" Margin="-6,-6,0,0" Visibility="Hidden">
????????????????????????????????????<Path  Fill="#e1e1e1" Data="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" />
????????????????????????????????</Border>
????????????????????????????</StackPanel>
????????????????????????</Border>
????????????????????</Grid>
????????????????????<ControlTemplate.Triggers>
????????????????????????<Trigger Property="IsMouseOver" Value="true">
????????????????????????????<Setter Property="Background" TargetName="Bd" Value="#ededef"/>
????????????????????????</Trigger>
????????????????????????<Trigger Property="IsSelected" Value="true">
????????????????????????????<Setter Property="Panel.ZIndex" Value="1"/>
????????????????????????????<Setter Property="Background" TargetName="Bd" Value="#ffffff"/>
????????????????????????????<Setter Property="Background" Value="#08bd14"/>
????????????????????????????<Setter Property="Visibility" TargetName="BottomBd" Value="Visible"/>
????????????????????????</Trigger>
????????????????????????<MultiTrigger>
????????????????????????????<MultiTrigger.Conditions>
????????????????????????????????<Condition Property="IsSelected" Value="false"/>
????????????????????????????????<Condition Property="IsMouseOver" Value="true"/>
????????????????????????????</MultiTrigger.Conditions>
????????????????????????????<Setter Property="BorderBrush" TargetName="Bd" Value="#ffffff"/>
????????????????????????</MultiTrigger>

????????????????????</ControlTemplate.Triggers>
????????????????</ControlTemplate>
????????????</Setter.Value>
????????</Setter>
????</Style>

View Code

?

四、快捷回復(fù)面板

應(yīng)用?TreeView 加?HierarchicalDataTemplate 實(shí)現(xiàn)樹(shù)形列表。

?

五、轉(zhuǎn)接客戶(hù)

自定義轉(zhuǎn)接客戶(hù)窗口,樣式Xaml代碼如下:

<Style x:Key="NoResize_Window" TargetType="{x:Type Window}">
????????????????????????<Setter Property="FontFamily" Value="Consolas,Microsoft YaHei" />
????????????????????????<Setter Property="ResizeMode" Value="CanMinimize" />
????????????????????????<Setter Property="Template">
????????????????????????????<Setter.Value>
????????????????????????????????<ControlTemplate TargetType="{x:Type Window}">
????????????????????????????????????<Grid>
????????????????????????????????????????<Grid.RowDefinitions>
????????????????????????????????????????????<RowDefinition Height="30" />
????????????????????????????????????????????<RowDefinition Height="*" />
????????????????????????????????????????</Grid.RowDefinitions>
????????????????????????????????????????<Border Grid.Row="0"  >
????????????????????????????????????????????<Border.Background>
????????????????????????????????????????????????<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
????????????????????????????????????????????????????<GradientStop Color="#494A52" Offset="0"/>
????????????????????????????????????????????????????<GradientStop Color="#45464f" Offset="1"/>
????????????????????????????????????????????????</LinearGradientBrush>
????????????????????????????????????????????</Border.Background>
????????????????????????????????????????????<Grid>
????????????????????????????????????????????????<!--Icon and Title-->
????????????????????????????????????????????????<DockPanel     >
????????????????????????????????????????????????????<TextBlock Margin="12,0,0,0" Text="{TemplateBinding Title}" FontFamily="Calibri"  VerticalAlignment="Center" Foreground="#FFFFFF" />
????????????????????????????????????????????????????<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" VerticalAlignment="Top">
????????????????????????????????????????????????????????<ctrl:MinAndCloseCaptionButton></ctrl:MinAndCloseCaptionButton>
????????????????????????????????????????????????????</StackPanel>
????????????????????????????????????????????????</DockPanel>
????????????????????????????????????????????</Grid>
????????????????????????????????????????</Border>

????????????????????????????????????????<Grid Grid.Row="1" >
????????????????????????????????????????????<Border Background="{TemplateBinding Background}"
                                        BorderBrush="{TemplateBinding BorderBrush}"  
                                        BorderThickness="{TemplateBinding BorderThickness}"
                                        Padding="{TemplateBinding Margin}"
                                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"  >
????????????????????????????????????????????????<ContentPresenter />
????????????????????????????????????????????</Border>
????????????????????????????????????????</Grid>
????????????????????????????????????</Grid>
????????????????????????????????</ControlTemplate>
????????????????????????????</Setter.Value>
????????????????????????</Setter>
????????????????????</Style>

View Code

轉(zhuǎn)接客戶(hù)列表,樣式Xaml代碼如下:

????<Style x:Key="OnlineUserListBoxStyle" TargetType="{x:Type ListBox}">
????????<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
????????<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
????????<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
????????<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
????????<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
????????<Setter Property="ScrollViewer.PanningMode" Value="Both"/>
????????<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
????????<Setter Property="VerticalContentAlignment" Value="Center"/>
????????<Setter Property="Template">
????????????<Setter.Value>
????????????????<ControlTemplate TargetType="{x:Type ListBox}">
????????????????????<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true">
????????????????????????<DockPanel>
????????????????????????????<Border BorderBrush="#dbdbdb" BorderThickness="0,0,0,1" DockPanel.Dock="Top">
????????????????????????????????<Grid Background="#f6f6f6"  TextElement.Foreground="#999999" DockPanel.Dock="Top">
????????????????????????????????????<Grid.ColumnDefinitions>
????????????????????????????????????????<ColumnDefinition Width="*" />
????????????????????????????????????????<ColumnDefinition Width="*"/>
????????????????????????????????????????<ColumnDefinition Width="*"/>
????????????????????????????????????</Grid.ColumnDefinitions>
????????????????????????????????????<TextBlock Margin="5,7,0,6" Grid.Column="0">狀態(tài)</TextBlock>
????????????????????????????????????<TextBlock Margin="5,7,0,6" Grid.Column="1">工號(hào)</TextBlock>
????????????????????????????????????<TextBlock Margin="5,7,0,6" Grid.Column="2">昵稱(chēng)</TextBlock>
????????????????????????????????</Grid>
????????????????????????????</Border>
????????????????????????????<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
????????????????????????????????<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
????????????????????????????</ScrollViewer>
????????????????????????</DockPanel>
????????????????????</Border>
????????????????????<ControlTemplate.Triggers>
????????????????????????<Trigger Property="IsEnabled" Value="false">
????????????????????????????<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
????????????????????????</Trigger>
????????????????????</ControlTemplate.Triggers>
????????????????</ControlTemplate>
????????????</Setter.Value>
????????</Setter>
????</Style>
????<Style x:Key="OnlineUserListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
????????<Setter Property="Background" Value="Transparent"/>
????????<Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
????????<Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
????????<Setter Property="Padding" Value="2,0,0,0"/>
????????<Setter Property="Template">
????????????<Setter.Value>
????????????????<ControlTemplate TargetType="{x:Type ListBoxItem}">
????????????????????<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
????????????????????????<Grid>
????????????????????????????<Grid.ColumnDefinitions>
????????????????????????????????<ColumnDefinition Width="*" />
????????????????????????????????<ColumnDefinition Width="*"/>
????????????????????????????????<ColumnDefinition Width="*"/>
????????????????????????????</Grid.ColumnDefinitions>

????????????????????????????<StackPanel Grid.Column="0" Orientation="Horizontal" >
????????????????????????????????<Border Margin="4,2,4,2" Height="24" Width="24" >
????????????????????????????????????<Grid>
????????????????????????????????????????<Path Fill="#6f6f6f" Data="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z"  />
????????????????????????????????????????<Path Visibility="{Binding Path=IsOnLine,Converter={StaticResource BoolToVisibilityConverter}}" Fill="#8bc34a" Data="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z" />
????????????????????????????????????</Grid>
????????????????????????????????</Border>
????????????????????????????????<TextBlock Padding="4,0,4,0" VerticalAlignment="Center"  Text="{Binding Path=OnLineStatus}" />
????????????????????????????</StackPanel>
????????????????????????????<StackPanel Grid.Column="1" Orientation="Horizontal"  >
????????????????????????????????<TextBlock Padding="4,0,4,0"  VerticalAlignment="Center" Text="{Binding Path=Name}"/>
????????????????????????????</StackPanel>
????????????????????????????<StackPanel Grid.Column="2" Orientation="Horizontal"  >
????????????????????????????????<TextBlock Padding="4,0,4,0"  VerticalAlignment="Center" Text="{Binding Path=RealName}"/>
????????????????????????????</StackPanel>
????????????????????????</Grid>
????????????????????</Border>
????????????????????<ControlTemplate.Triggers>
????????????????????????<Trigger Property="IsSelected" Value="true">
????????????????????????????<Setter Property="Background" TargetName="Bd" Value="#9ea5b8"/>
????????????????????????????<Setter Property="Foreground" Value="#ffffff"/>
????????????????????????</Trigger>
????????????????????????<MultiTrigger>
????????????????????????????<MultiTrigger.Conditions>
????????????????????????????????<Condition Property="IsSelected" Value="false" />
????????????????????????????????<Condition Property="IsMouseOver" Value="true" />
????????????????????????????</MultiTrigger.Conditions>
????????????????????????????<Setter Property="Background" TargetName="Bd" Value="#e0e1e5"/>
????????????????????????</MultiTrigger>
????????????????????????<Trigger Property="IsEnabled" Value="false">
????????????????????????????<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
????????????????????????</Trigger>
????????????????????</ControlTemplate.Triggers>
????????????????</ControlTemplate>
????????????</Setter.Value>
????????</Setter>
????</Style>

View Code

?

關(guān)于以上控件的事件與命令,引進(jìn)System.Windows.Interactivity.

在Xmal中導(dǎo)入命名控件?xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

使用代碼如下:

????????????????<ListBox Margin="12,0,12,0" BorderThickness="1" 
                                 Style="{DynamicResource OnlineUserListBoxStyle}" 
                                 ItemContainerStyle="{DynamicResource OnlineUserListBoxItemStyle}"
                                 ItemsSource="{Binding Path= AllUsers}"
                                 SelectedItem="{Binding Path=SelectedUser}"
                                 >
????????????????????<i:Interaction.Triggers>
????????????????????????<i:EventTrigger EventName="SelectionChanged">
????????????????????????????<i:InvokeCommandAction Command="{Binding Path= UserSelectedChangedCommand}" />
????????????????????????</i:EventTrigger>
????????????????????</i:Interaction.Triggers>
????????????????</ListBox>

View Code

?

系統(tǒng)運(yùn)行截圖:

?

說(shuō)明:

程序UI布局及展示為模仿微信多客服官方程序,所有樣式源碼為本人所寫(xiě)及參考網(wǎng)上部分資源。

程序中所用圖標(biāo)來(lái)源于這兩個(gè)資源庫(kù):http://ipnx.cn/ ?http://ipnx.cn/

?

小結(jié):

本文只作了簡(jiǎn)單的介紹,主要介紹UI上的一些實(shí)現(xiàn)和功能介紹。具體后臺(tái)業(yè)務(wù)邏輯看以后能否補(bǔ)上,包括Prism使用,和微信公眾號(hào)相關(guān)的知識(shí)。

?

博客地址:http://ipnx.cn/
博客版權(quán):本文以學(xué)習(xí)、研究和分享為主,歡迎轉(zhuǎn)載,但必須在文章頁(yè)面明顯位置標(biāo)明原文連接并保留此處說(shuō)明。
如果文中有不妥或者錯(cuò)誤的地方還望您指出,以免讓讀者產(chǎn)生誤解。
感謝您的閱讀,喜歡就點(diǎn)個(gè)贊,【推薦】一下!

?

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Scrapy實(shí)現(xiàn)微信公眾號(hào)文章爬取和分析 Scrapy實(shí)現(xiàn)微信公眾號(hào)文章爬取和分析 Jun 22, 2023 am 09:41 AM

Scrapy實(shí)現(xiàn)微信公眾號(hào)文章爬取和分析微信是近年來(lái)備受歡迎的社交媒體應(yīng)用,在其中運(yùn)營(yíng)的公眾號(hào)也扮演著非常重要的角色。眾所周知,微信公眾號(hào)是一個(gè)信息和知識(shí)的海洋,因?yàn)槠渲忻總€(gè)公眾號(hào)都可以發(fā)布文章、圖文消息等信息。這些信息可以被廣泛地應(yīng)用在很多領(lǐng)域中,比如媒體報(bào)道、學(xué)術(shù)研究等。那么,本篇文章將介紹如何使用Scrapy框架來(lái)實(shí)現(xiàn)微信公眾號(hào)文章的爬取和分析。Scr

微信公眾號(hào)認(rèn)證和不認(rèn)證有哪些區(qū)別 微信公眾號(hào)認(rèn)證和不認(rèn)證有哪些區(qū)別 Sep 19, 2023 pm 02:15 PM

微信公眾號(hào)認(rèn)證和不認(rèn)證的區(qū)別在認(rèn)證標(biāo)識(shí)、功能權(quán)限、推送頻率、接口權(quán)限和用戶(hù)信任度等方面。詳細(xì)介紹:1、認(rèn)證標(biāo)識(shí),認(rèn)證公眾號(hào)會(huì)獲得官方頒發(fā)的認(rèn)證標(biāo)識(shí),即藍(lán)色V標(biāo)志,這個(gè)標(biāo)志可以增加公眾號(hào)的可信度和權(quán)威性,讓用戶(hù)更容易辨別真實(shí)的官方公眾號(hào);2、功能權(quán)限,認(rèn)證公眾號(hào)相比未認(rèn)證的公眾號(hào)擁有更多的功能和權(quán)限,例如認(rèn)證公眾號(hào)可以申請(qǐng)開(kāi)通微信支付功能,實(shí)現(xiàn)在線(xiàn)支付和商業(yè)化運(yùn)營(yíng)等等。

Python中的爬蟲(chóng)實(shí)戰(zhàn):微信公眾號(hào)爬蟲(chóng) Python中的爬蟲(chóng)實(shí)戰(zhàn):微信公眾號(hào)爬蟲(chóng) Jun 10, 2023 am 09:01 AM

Python是一種優(yōu)雅的編程語(yǔ)言,擁有強(qiáng)大的數(shù)據(jù)處理和網(wǎng)絡(luò)爬蟲(chóng)功能。在這個(gè)數(shù)字化時(shí)代,互聯(lián)網(wǎng)上充滿(mǎn)了大量的數(shù)據(jù),爬蟲(chóng)已成為獲取數(shù)據(jù)的重要手段,因此,Python爬蟲(chóng)在數(shù)據(jù)分析和挖掘方面有著廣泛的應(yīng)用。在本文中,我們將介紹如何使用Python爬蟲(chóng)來(lái)獲取微信公眾號(hào)文章信息。微信公眾號(hào)是一種流行的社交媒體平臺(tái),用于在線(xiàn)發(fā)布文章,是許多公司和自媒體推廣和營(yíng)銷(xiāo)的重要工

wpf從入門(mén)到精通教程 wpf從入門(mén)到精通教程 Oct 27, 2023 am 09:45 AM

WPF是微軟開(kāi)發(fā)的一種基于.NET Framework的桌面應(yīng)用程序開(kāi)發(fā)框架。它提供了豐富的用戶(hù)界面元素、數(shù)據(jù)綁定和動(dòng)畫(huà)等功能,使得開(kāi)發(fā)者可以輕松地創(chuàng)建高質(zhì)量的桌面應(yīng)用程序。

用PHP構(gòu)建一個(gè)微信公眾號(hào)API接口 用PHP構(gòu)建一個(gè)微信公眾號(hào)API接口 May 13, 2023 pm 12:01 PM

在當(dāng)今互聯(lián)網(wǎng)時(shí)代,微信公眾號(hào)成為了越來(lái)越多企業(yè)的重要營(yíng)銷(xiāo)渠道。想要自己的微信公眾號(hào)實(shí)現(xiàn)更多的功能,常常需要編寫(xiě)相應(yīng)的接口。本文將以PHP語(yǔ)言為例,介紹如何構(gòu)建一個(gè)微信公眾號(hào)API接口。一、前置準(zhǔn)備在編寫(xiě)微信公眾號(hào)API接口之前,需要開(kāi)發(fā)者擁有一個(gè)微信公眾號(hào)的賬號(hào),并且在微信公眾平臺(tái)中申請(qǐng)開(kāi)發(fā)者接口權(quán)限。申請(qǐng)成功后,可以獲取到相關(guān)的開(kāi)發(fā)者AppID和AppSe

如何使用Laravel開(kāi)發(fā)一個(gè)基于微信公眾號(hào)的在線(xiàn)點(diǎn)餐系統(tǒng) 如何使用Laravel開(kāi)發(fā)一個(gè)基于微信公眾號(hào)的在線(xiàn)點(diǎn)餐系統(tǒng) Nov 02, 2023 am 09:42 AM

如何使用Laravel開(kāi)發(fā)一個(gè)基于微信公眾號(hào)的在線(xiàn)點(diǎn)餐系統(tǒng)隨著微信公眾號(hào)的廣泛應(yīng)用,越來(lái)越多的企業(yè)開(kāi)始將其作為在線(xiàn)營(yíng)銷(xiāo)的重要渠道。在餐飲行業(yè)中,開(kāi)發(fā)一個(gè)基于微信公眾號(hào)的在線(xiàn)點(diǎn)餐系統(tǒng)能夠提高企業(yè)的效率和銷(xiāo)售額。本文將介紹如何使用Laravel框架來(lái)開(kāi)發(fā)一個(gè)這樣的系統(tǒng),并提供具體的代碼示例。項(xiàng)目準(zhǔn)備首先,需要確保已經(jīng)在本地環(huán)境中安裝好了Laravel框架??梢酝?/p>

公眾號(hào)每天只能發(fā)一篇文章嗎 公眾號(hào)每天只能發(fā)一篇文章嗎 Jun 16, 2023 pm 02:04 PM

公眾號(hào)每天不是只能發(fā)一篇文章,每次最多可以發(fā)表八篇文章,多篇文章的發(fā)布方法:1、點(diǎn)擊左側(cè)的“素材管理”,再點(diǎn)擊“新建圖文素材”開(kāi)始編輯第一篇文章;2、編輯完第一篇文章之后,點(diǎn)擊左側(cè)第一篇文章下面的+號(hào),點(diǎn)擊“圖文消息”即可編輯第二篇文章;3、做完多圖文后,點(diǎn)擊“保管并群發(fā)”即可完成多篇文章的發(fā)布。

使用Go語(yǔ)言框架構(gòu)建微信公眾號(hào)應(yīng)用 使用Go語(yǔ)言框架構(gòu)建微信公眾號(hào)應(yīng)用 Jun 04, 2023 am 10:40 AM

隨著互聯(lián)網(wǎng)的普及和移動(dòng)設(shè)備的廣泛使用,微信公眾號(hào)已經(jīng)成為了企業(yè)營(yíng)銷(xiāo)必不可少的一部分。通過(guò)微信公眾號(hào),企業(yè)可以實(shí)現(xiàn)輕松地與用戶(hù)互動(dòng),推廣產(chǎn)品和服務(wù),提高品牌知名度。為了更好地開(kāi)發(fā)微信公眾號(hào)應(yīng)用,越來(lái)越多的開(kāi)發(fā)者和企業(yè)選擇使用Go語(yǔ)言來(lái)構(gòu)建微信公眾號(hào)應(yīng)用。Go語(yǔ)言是一種由Google開(kāi)發(fā)的編程語(yǔ)言,它的語(yǔ)法簡(jiǎn)潔,適合構(gòu)建高性能、高并發(fā)的實(shí)時(shí)應(yīng)用程序。在簡(jiǎn)單易用和

See all articles